2

私はいくつかの強力な最適化を行おうとしています。遅延ジョブについては知っています。しかし、応答を送信する前に遅延ジョブを作成するのに時間をかけたくありません。ユーザーに応答したいのですが、応答が送信された後に遅延ジョブを作成することについて心配しています。

そのようなことをする宝石はありますか?

4

2 に答える 2

2

軽量の場合は、スレッドを作成できます。

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
于 2012-04-17T19:17:28.253 に答える
0

遅れた仕事。ある時点で、応答が送信された後に実行したいプロセスに関する情報を保存する必要があります。これはまさに遅延ジョブの目的です: バックグラウンドで実行するプロセスに関する情報を保存します。

他の宝石は基本的に同じことを行います。つまり、何をすべきかについての情報を少し保存します。仕事が遅れる問題とは?遅延ジョブに特定の問題がある場合は、他の証明されていない方法を使用するよりも、問題を解決する方がよいでしょう。

于 2012-04-17T18:37:51.067 に答える