2016-03-23 10 views
1

1時間ごとに実行する定期タスクがあるとします。作業者はタスクを受け取り、処理を開始します。タスクが処理されている間に、スーパーバイザ経由で制御されるcelerydプロセスが再起動されます(supervisorctlがすべて再開します)。タスクは実行を完了したことがないにもかかわらず、再実行されません。定期的なタスクがセロリで終了する場合、そのタスクをエンキューするにはどうすればいいですか?

どのようにして定期的なタスクをすぐにキューに入れ、複数のバージョンのタスクが同時に実行されないようにすることができますか? (例えば、my_actual_task.defer(…))それが完了するまでキューから削除されることはありません(

答えて

0

はそれを行うためのよりよい方法があるかもしれませんが、あなたはだけキューに定期的にタスクを作成するために、定期的なタスクを使用することができますacks_lateを使用していると仮定します)。

acks_lateを使用していない場合は、大量のタスクを試しに配置し、対応するfinallymy_actual_task.retry()に置くことができます。

いずれにしても、通常、作業中の作業を終了する機会を与えずに労働者を殺すことは避けてください。

関連する問題