Celery には、N 秒ごとに実行される 4 つのスケジュールされたタスクがあります。現在、アプリケーション ロジックは、タスクごとに 1 つのワーカーのみを提供します (db からデータを読み書きし、並列実行は許可されません)。
しかし、CELERYD_CONCURRENCY = 1 を使用して、すべてのタスクに対して 1 つのワーカーしか設定できません。
タスクごとに単一のワーカーを設定するにはどうすればよいですか? ありがとう
Celery には、N 秒ごとに実行される 4 つのスケジュールされたタスクがあります。現在、アプリケーション ロジックは、タスクごとに 1 つのワーカーのみを提供します (db からデータを読み書きし、並列実行は許可されません)。
しかし、CELERYD_CONCURRENCY = 1 を使用して、すべてのタスクに対して 1 つのワーカーしか設定できません。
タスクごとに単一のワーカーを設定するにはどうすればよいですか? ありがとう
4 つのタスクを並行して実行したくないということですか? その場合は、サブタスクの「チェーン」のようなものを使用する必要があります。以下を参照してください。
http://docs.celeryproject.org/en/latest/userguide/canvas.html#chains
| を使用してタスクをチェーンに追加するだけです。演算子を作成し、delay() または async_delay() で実行します。そうすれば、次のタスクは、前のタスクが完了した後にのみ開始されます。そして、プールから 1 つのワーカーが各タスクに割り当てられます (同じワーカーでも別のワーカーでもかまいません)。