2017-02-28 10 views
0

私はHerokuでDjangoアプリケーションを実行しており、毎時バックグラウンドタスクを実行する必要があります。イベントを逃さないことが非常に重要ですHerokuスケジューラと時計プロセス

私はHerokuスケジューラを使用することができます。ただし、

スケジューラは、実行が であることを意味する「ベストエフォート型」サービスであり、保証はされていません。スケジューラは時折(ただし はまれに)スケジュールされたジョブの実行を見逃すことが知られています。スケジュールされたジョブがアプリケーションの重要なコンポーネントの である場合は、信頼性、制御性、および可視性の向上のために、 カスタムクロックプロセスを実行することをお勧めします。

私はイベントを欠場したくないので、私は、カスタム・クロック・プロセス・ページに行き、そこは言う:

dynosが再起動されているので、少なくとも一日一回、いくつかのロジックが にする必要がありますdynoの再起動中にジョブ間隔 がスキップされなかったことを確認するために時計プロセスの起動時に存在します。

私の質問は、クロックプロセスとHerokuスケジューラを使用する利点はありますか?どちらも100%信頼できるものではないので、むしろスケジューラーを使用して、それ以外の場合は余分なdyno(クロックプロセス)を支払う必要があるかどうかを確認するロジックを実装します。

答えて

1

はいいくつかあります。しかし、すでに述べたように、時計プロセスを使用することの主な違いと最も顕著な違いは、細かく細分化できるレベルです。 2つのスケジューリング方法とのもう一つの重要な違いは、信頼性ある言われていること

  1. ラン、5分ごとに
  2. を実行し、10秒ごとに

:Herokuのスケジューラでは、例えば、次のようなものを達成することはできません。 Heroku Schedulerを使用すると、文字通りインフラストラクチャーのサイズを制御することなく「ブラックボックス」を使用しています。時計プロセスを使用すると、dynoのサイズを選択することができます(多分計算の厳しいタスクをバックグラウンドワーカーに送る方がよいかもしれません)。 。

また、さまざまな外部サービスやスクリプトを呼び出す複雑なスケジューリングシステムを使用している場合、スケジューリングコードを制御することで、コードのテストと整理に役立つかもしれません。

関連する問題