3

私はDjango CeleryをRabbitMQバックエンドで使用しており、すべてHerokuでホストされています。

Celery docs から、Celery がタスク用の新しいキューを作成するように設計されていることは明らかです。私の問題は、RabbitMQ コンソールにアクセスすると、デフォルトのキューだけにコンシューマー (celeryd インスタンス) が接続されていることがわかります。その結果、デフォルト以外のキューのすべてのタスクが実行されなくなります。

Celery のドキュメントには、Celery が多くのキューを作成することが想定されていると明示的に記載されているため、ここで構成に非常に基本的なものが欠けているように感じます。それにもかかわらず、消費者に「飛び回って」空でないキューを探すようにさせることはできません-それらは空のデフォルトキューにとどまります。

この問題を解決する方法についてのアイデアはありますか?

ありがとう!

4

1 に答える 1

1

私はあなたと同じ問題を抱えていましたが、ドキュメントを掘り下げると、キューが自動的に作成されたとしても、Celery ワーカーに新しく作成されたキューから消費を開始するよう明示的に指示する必要があると思います。

ドキュメントによると、ワーカーは 1 つ以上のキューに明示的にバインドされています。つまり、ワーカーの起動時に -Q 引数を指定しない場合、ワーカーは「デフォルト」キューにバインドされます。一方、-Q 引数に値を指定すると、ワーカーはバインドされます。あなたが提供する特定のキューに。これは、ワーカーを「未定義」キュー (または後で作成されるキュー) にバインドできないことを意味すると理解しています。

ドキュメントから: http://docs.celeryproject.org/en/latest/userguide/workers.html#queues

ワーカーが新しく作成されたキューから消費を開始するようにするには、add_consumer() メソッドを使用して (実行時に) メッセージを送信することができます。

于 2013-07-23T00:19:07.930 に答える