5

Celery インスタンスを 2 つの方法で使用するアプリケーションがあります。インスタンスの.task属性をタスク デコレータとして使用し、celery workers を呼び出すときにインスタンスを -A (--app) 引数として渡します。このワークフローは、生成と消費の両方に同じ Celery インスタンスを使用し、機能していますが、プロデューサー (タスク) とコンシューマー (セロリ ワーカー) の両方に同じ Celery インスタンスを使用しています。

現在、AMQP サービス プロバイダーである Bigwig RabbitMQ の使用を検討しており、2 つの異なるURL を公開しています。1 つはメッセージ プロデューサー用に最適化され、もう 1 つはメッセージ コンシューマー用に最適化されています。

個別のブローカー エンドポイントを利用するためにセットアップを変更する最善の方法は何ですか? 私は、単一の Celery インスタンスが (BROKER_URL 設定を介して) 単一のブローカー URL しか使用できないと想定しています。BROKER_URL 設定を除いて、同じように構成された 2 つの異なる Celery インスタンスを使用する必要がありますか?

4

2 に答える 2

0

はい、1 つのセロリ インスタンスで使用できるブローカー URL は 1 つだけです。あなたが言ったように、唯一の方法は、消費用と生産用に BROKER_URL が異なる 2 つのワーカーを使用することです。

技術的には些細なことですが、これを利用できます ( http://celery.readthedocs.org/en/latest/reference/celery.html#celery.Celery.config_from_object ) が、もちろん 2 つのワーカーが実行されますが、私は実行していませんこれが問題を引き起こすとは思わない。

hereで説明されている別のオプションもありますが、私はそれを避けます。

于 2014-03-28T13:51:28.480 に答える