私はRuby on Railsルートを持っています。 config/routes.rb
は言う:POST
扱うRuby on Railsルートの処理を延期するにはどうすればよいですか?
def testruns
方法:私が持っている
post 'upload/testruns' => 'upload#testruns'
app/controllers/api/upload_controller.rb
で。問題は、アップロードデータが蓄積するにつれて、それが必要とする関連する計算(例えば、統計を保持し、アップロードごとにそれらを再計算するなど)のために、プロセスの処理時間が増加することである。
これは反対側(すなわち、POST
からhttps://app.com/upload/testrunsを開始する側)をブロックし、最終的にはハードコードされたタイムアウトになります。私は完全にタイムアウトを増やすことができますが、それは猫とマウスのゲームです。すぐに何度も何度も増やす必要があります。
POST
(ほんの数秒であるはずです)を受け取った直後にテストランズの処理方法から戻って、どうすればいいですか?統計処理は後で?
POSTされているデータは大きくありません。それはますます長くなるプロセスのためにそれを作る蓄積された歴史です。あなたが実行することにより、ジョブusignのActiveJobsを作成することができます
使用のバックグラウンドジョブ 'activejob'または個別に' 'sidekiq' resque'は、すべての処理inbackgroundを作成し、応答時間が少なくなりますので、ジョブIDと素早いレスポンスを送信します –