Herokuを使用していて、Herokuアプリで定期的にアクションを要求するcronを介して呼び出されるスクリプト(別のサーバー上)が必要です。このアクションは、完了するまでに1〜2分かかる可能性のある処理を実行します。Herokuには30秒のリクエスト制限があると思います。代わりに、コントローラーアクションからRakeタスクを呼び出すことができると考えていました。
これは機能しますか?誰かがこれをまだ試したかどうか知りたいです。
ありがとう。
Herokuを使用していて、Herokuアプリで定期的にアクションを要求するcronを介して呼び出されるスクリプト(別のサーバー上)が必要です。このアクションは、完了するまでに1〜2分かかる可能性のある処理を実行します。Herokuには30秒のリクエスト制限があると思います。代わりに、コントローラーアクションからRakeタスクを呼び出すことができると考えていました。
これは機能しますか?誰かがこれをまだ試したかどうか知りたいです。
ありがとう。
タスクを開始するためのプロキシとしてHTTPリクエストを使用しない限り、rakeタスクは機能します。実際、タスクがHTTPリクエストからフォークされた場合、タイムアウトはHTTPリクエストと同じになります。
タスクを開始するには、別の方法が必要です。良い解決策として、crontab(Heroku側)またはWorkerのいずれか。
このために、ワーカーでバックグラウンドジョブを使用することをお勧めします。その場合、定期的なプロセスはワーカーを開始するだけでよく、プロセスにどれだけ時間がかかってもかまいません。
この問題を正確に解決するためのgemを作成しました。これにより、任意のrakeタスクをdelayed_jobとしてキューに入れることができます。
rake delay:db:seed
実行されます
rake db:seed
delayd_jobとして。http://rubygems.org/gems/delayed_taskまたはhttp://blog.opsb.co.uk/long-running-rake-tasks-on-herokuで見つけることができます。