2016-09-05 7 views
0

私はこれについて少し混乱しています。私は非同期的に実行したいタスクをいくつか持っています。例えば、在庫同期の統合です。このために私は遅れた仕事を実装しましたが、私はレーキジョブを実行する必要があることを認識しています。私はHerokuスケジューラを使ってこのレーキタスクを10分ごとに実行できます。私の質問は、インベントリ同期方法を実行するためにレーキタスクを作成すると、まだ遅延ジョブが必要ですか?私の理解は、herokuスケジューラが「1つのオフdynos」をキックオフすることです。Herokuスケジューラを使用しても、まだ遅延ジョブが必要ですか?

遅延ジョブを使用する代わりに、別のdynoが使用されているので、同期方法を直接開始できませんか?遅れていた仕事の付加価値は何ですか?

答えて

1

Herokuのスケジューラは、一般的なサーバーでcronが処理するものを置き換えます。 Delayed JobまたはSidekiqは、スケジュールされたスケジュールではなく、アプリケーションから非同期にジョブを処理するためのものです。

&これらのジョブをバックエンドで実行する理由は、サーバーができるだけ早く応答を返すため、ユーザーが不必要に長い実行プロセスが完了するのを待たせることではなくアウトバウンド電子メール、外部APIリクエストなど)を含むことができる。

Ex、スケジューラは、1時間または1日ごとにスクリプトからアナリティックまたはアップデートを実行できますが、遅延したジョブは実行できません。

+0

私が正しく理解していれば、在庫の同期がユーザーによって開始された場合、遅延ジョブを使用してherokuスケジューラーにプロセスを実行させると便利です。ユーザーによって開始されていないが、(英雄)スケジュールで実行されている場合、私は仕事を遅らせる必要はありませんか? – stoerebink

+1

私は、毎日または毎時特定の時間に実行されるべきものはHeroku Schedulerによってトリガされるべきであり、Railsではrakeタスクを使用して実行することを提案します。例:インベントリ名前空間を持っている場合は 'rake inventory:sync' syncというタスクがあります。そのレーキタスクでは、処理を行うことができます。または、(私がやることは)バックグラウンドでそれを実行するワーカー/ジョブをトリガーします。 – Noah

関連する問題