10

同じマシンでセロリの 2 つのインスタンスを実行したいと考えています。1 つはアプリケーションの「A」バージョン用で、もう 1 つは「B」バージョン用です。

次のように開始する 2 つのインスタンスがあります。

(env1)/home/me/firstapp$ celery -A app.tasks worker --config celeryconfig
(env2)/home/me/secondapp$ celery -A app.tasks worker -n Carrot --config celeryconfig

各アプリケーションの tasks.py で、次のようなセロリ インスタンスを作成します。

 celery = Celery('tasks', backend='amqp', broker='amqp://guest@127.0.0..1.5672//')
 @celery.task
 def run_a_task():
     do_stuff()

env2 の task.py で、firstapp の最初のセロリ インスタンスではなく、secondapp (Carrot という名前) の 2 番目のセロリ インスタンスを使用するように指定するにはどうすればよいですか? 最初の行のセロリのコンストラクターで何かを変更する必要があると思われますが、何を追加すればよいかわかりません。

4

2 に答える 2

7

AMQP を使用しているようですので、別の取引所を使用して解決することをお勧めします。

AMQP 構造に関するこのブログ投稿を読むことをお勧めします: http://blogs.digitar.com/jjww/?s=rabbits&x=0&y=0

Celery 固有の情報については、http: //docs.celeryproject.org/en/latest/userguide/routing.htmlを参照してください。

できることの短いバージョンは、アプリに別のデフォルト キューを与えることです。

from kombu import Exchange, Queue

CELERY_DEFAULT_QUEUE = 'app1'
CELERY_QUEUES = (
    Queue('app1', Exchange('app1'), routing_key='app1'),
)
于 2013-04-24T21:06:46.960 に答える