2017-11-09 3 views
1

長時間実行しているジョブを処理しています。私はコントローラから長時間実行されているメソッドを呼び出しています。私はすぐにユーザーにjsonの応答を送信したい。以下は私のコードですが、動作しません。Rails:長時間実行しているジョブに対してすぐにjson応答を送信する方法

def process 
p = Proces.new(:status => "in-progress") 
render :json => {:id => process.id} 
long_running_job() 
end 

すぐにjson応答を送信するにはどうすればよいですか?

+0

どの部分が機能していませんか?あなたはどんなエラーを出していますか? –

+0

long_running_jobs()メソッドが20分間実行された後、json応答が返されます。私は、20分待たずにすぐにレンダリングされるようにしたい。 – user2274074

答えて

2

バックグラウンドジョブキューでlong_running_jobを実行する必要があります。これにより、長時間実行されているタスクはWeb要求サイクルの外側で実行され、JSONをすぐに返すことができます。 Rails 4.2以降とSidekiqをご利用の場合は、ActiveJobをご覧ください。

+1

さらに重要な点は、バックグラウンドプロセスを使用すると、Webスレッドが他の要求を受け入れることができるということです。 – max

関連する問題