私はブローカーとしてdjango celeryとrabbitmqを使用しています(ゲストのウサギユーザーはローカルマシンにフルアクセスできます)。私はすべて独自のvirtualenvにたくさんのプロジェクトを持っていますが、最近そのうち2つでセロリが必要でした。実行中のrabbitmqのインスタンスが1つあります
(project1_env)python manage.py celery worker
normal celery stuff....
[Configuration]
broker: amqp://guest@localhost:5672//
app: default:0x101bd2250 (djcelery.loaders.DjangoLoader)
[Queues]
push_queue: exchange:push_queue(direct) binding:push_queue
私の他のプロジェクトでは
(project2_env)python manage.py celery worker
normal celery stuff....
[Configuration]
broker: amqp://guest@localhost:5672//
app: default:0x101dbf450 (djcelery.loaders.DjangoLoader)
[Queues]
job_queue: exchange:job_queue(direct) binding:job_queue
project1 コードでタスクを実行すると、push_queue で問題なく project1 セロリが起動します。問題は、project2 で作業しているときに、セロリが project1 で実行されていなくても、どのタスクも project1 セロリで起動しようとすることです。
project1_env を再起動してセロリを起動すると、
Received unregistered task of type 'update-jobs'.
ウサギで実行するlist_queues
と、すべてのキューが表示されます
...
push_queue 0
job_queue 0
...
私の環境設定とCELERYD_CHDIR
およびCELERY_CONFIG_MODULE
は両方とも空白です。
私が試したいくつかのこと:
- セロリのパージ
- rabbitmq の force_reset
- この回答で概説されている rabbitmq 仮想ホスト: 同じ RabbitMQ ブローカー バックエンド プロセスを使用した複数の Celery プロジェクト
- djangoセロリの設定を移動し、CELERY_CONFIG_MODULEを適切な設定に設定する
- 両方のプロジェクトの CELERYD_CHDIR を適切なディレクトリに設定する
これらのどれも、project1 セロリで動作しようとしている project2 タスクを停止していません。
それが違いを生んだり助けたりするなら、私はMacを使っています。
アップデート
さまざまな仮想ホストをセットアップすると、すべてが機能しました。設定を間違えただけです。