1

3 台のマシンのクラスターがあります。それらの上で走りたいcelery beat。関連する質問がいくつかあります。

  1. Celery には、永続的なスケジューラという概念があります。スケジュールが crontab エントリのみで構成され、 によって静的に定義されている限り、スケジュールCELERYBEAT_SCHEDULEを永続化する必要はありますか?
  2. その場合、このストレージがクラスターのすべてのマシン間で同期されていることを確認する必要がありますか?
  3. djcelery.schedulers.DatabaseScheduler並行ビートデーモンを自動的に処理しますか? つまり、3 つの Beat デーモンを で実行するだけでDatabaseScheduler、タスクが重複することはありませんか?
  4. DatabaseSchedulerDjango ORMなしで、MongoDBに基づいたようなものはありますか? Celery 独自の MongoDB ブローカーと結果のバックエンドのように。
4

1 に答える 1

4

現在、Celery は複数の同時 celerybeat インスタンスをサポートしていません。

一度に 1 つのスケジュールに対して 1 つのスケジューラのみが実行されるようにする必要があります。そうしないと、タスクが重複してしまうことになります。集中型アプローチを使用すると、スケジュールを同期する必要がなくなり、ロックを使用せずにサービスを運用できます。

http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html

于 2012-12-07T20:40:17.940 に答える