40

同じ redis データベースに異なるタスクとワーカーを持つ複数のセロリ キューを保持しようとしています。本当に、私のマシンに 2 つではなく 1 つの redis サーバーのみが必要な場合の便利な問題です。

私はセロリのチュートリアルドキュメントを逐語的に従いました. 少し調整した名前/キューですべてを複製しようとすると、エラーが発生し続けます。

注 - 私は明らかに問題の一部である Python と Celery に慣れていません。どの部分が「タスク/タスク」という名前と特別な言葉として名付けられているのかわかりません。

私の要約版のドキュメント: Run celery -A tasks workerto spawn the worker. tasks.py には、Celerycelery = Celery('tasks', broker='redis://localhost')に接続するためのタスク コードと@task()、遅延させたい関数の上にあるタスク コードが含まれています。

タスクをキューに入れるための私のプログラム内...

from tasks import do_work
do_work.delay()

上記のすべてを考慮して、これを別々のキューとワーカーで独立して実行される 2 種類のタスクに変えるために必要な手順は何ですか? たとえば、blue_tasks と red_tasks?

タスクのすべてのインスタンスを blue_tasks または red_tasks に変更しようとしました。ただし、blue_tasks をキューに入れると、起動した red_tasks ワーカーが処理を開始します。

デフォルトのキューなどについて読んだので、このコードを試しましたが、うまくいきませんでした:

CELERY_DEFAULT_QUEUE = 'red'
CELERY_QUEUES = (
    Queue('red', Exchange('red'), routing_key='red'),
)

celery worker補足として、セロリがデフォルトの amqp インスタンスに接続しようとしてエラーが発生する理由がわかりませんが、celery -A tasks workerセロリに Redis に接続するように指示します。celery worker何も指定されていない場合、ワーカーで実行しようとしているタスク コードは何ですか?

4

2 に答える 2