2

Preconditions: There is a small celery cluster processing some tasks. Each celery instance has few workers running. Everything is running under flask.

Tasks: I need an ability to pause/resume consuming of tasks from a particular node from the code. I.e. task can make a decision if current celery instance and all her workers should pause or resume consuming of tasks.

Didn't find any straight forward way to solve this. Any suggestions?

Thanks in advance!

4

2 に答える 2

0

Control.cancel_consumer(queue, **kwargs)(参照) は、おそらくユース ケースに必要なすべてです。

于 2013-09-04T19:01:53.987 に答える
-1

おそらくより良い戦略は、作業を複数のキューに分割することです。

defaultすべてのタスクが開始されるキューを用意します。デフォルト キューを監視しているワーカーは、ロジックに従って、他のアクティブなキューにサブタスクを追加できます。フラスコから直接アクティブなキューにタスクを追加できる場合、この追加のキューは必要ないかもしれません。

そうすれば、各ノードは一時停止中かアクティブ中かを気にする必要がありません。キューに追加されたすべてのものを消費するだけです。デフォルトのワーカーがサブタスクを追加していない限り、これらの場所固有のキューは空になります (したがって一時停止されます)。

于 2012-05-04T00:56:16.730 に答える