私はいくつかの強力な最適化を行おうとしています。遅延ジョブについては知っています。しかし、応答を送信する前に遅延ジョブを作成するのに時間をかけたくありません。ユーザーに応答したいのですが、応答が送信された後に遅延ジョブを作成することについて心配しています。
そのようなことをする宝石はありますか?
私はいくつかの強力な最適化を行おうとしています。遅延ジョブについては知っています。しかし、応答を送信する前に遅延ジョブを作成するのに時間をかけたくありません。ユーザーに応答したいのですが、応答が送信された後に遅延ジョブを作成することについて心配しています。
そのようなことをする宝石はありますか?
軽量の場合は、スレッドを作成できます。
def show
@record = Record.find(params[:id])
Thread.new do
Rails.logger.info "#{Time.now}"
sleep 10
Rails.logger.info "#{Time.now}"
end
end
上記のログ出力(および応答は即座にレンダリングされます)
Started GET "/" for 127.0.0.1 at 2012-04-17 14:15:29 -0500
Processing by HomeController#public as HTML
2012-04-17 14:15:29 -0500
Rendered home/public.html.haml within layouts/application (0.4ms)
Rendered layouts/_navbar.html.haml (8.9ms)
Rendered layouts/_flash.html.haml (0.1ms)
Rendered layouts/_footer.html.haml (0.1ms)
Completed 200 OK in 210ms (Views: 202.3ms | ActiveRecord: 0.0ms)
2012-04-17 14:15:39 -0500
遅れた仕事。ある時点で、応答が送信された後に実行したいプロセスに関する情報を保存する必要があります。これはまさに遅延ジョブの目的です: バックグラウンドで実行するプロセスに関する情報を保存します。
他の宝石は基本的に同じことを行います。つまり、何をすべきかについての情報を少し保存します。仕事が遅れる問題とは?遅延ジョブに特定の問題がある場合は、他の証明されていない方法を使用するよりも、問題を解決する方がよいでしょう。