2016-12-25 19 views
0

私の同僚はセロリタスク、設定ファイルに必要な設定を書いているときにスーパーバイザの設定ファイルを受け取っていない。すべてが完璧に動作しています。プロジェクトは私に渡され、私は解決しなければならないいくつかの問題を見ています。セロリの仕事は2つのプロジェクト

1台のマシンで2つのプロジェクトが実行されていて、両方のプロジェクトがほぼ同じで、projAprojBと呼ぶことができます。

;for projA 
[program:celeryd] 
directory=/path_to_projA/ 
command=celery -A project worker -l info 
... 

[program:celerybeat] 
directory=/path_to_projA/ 
command=celery -A project beat -l info 
... 

; For projB 
[program:celerydB] 
directory=/path_to_projB/ 
command=celery -A project worker -l info 
... 

[program:celerybeatB] 
directory=/path_to_projB/ 
command=celery -A project beat -l info 
... 

問題は、私が作成していますされてループを通過するタスクと1つのタスクのみがprojAcelerydから受信し、受信されないでタスクを残りの(または可能性:

supervisord.confファイルがようですcelerydprojBで受信される)。

しかし、私がprojBのセロリプログラムを停止すると、すべてうまくいきます。 ご注意ください、 django-appの実際の名前はプロジェクトですので、セロリ - プロジェクトワーカー/ビート-l情報です。

裸にしてください、私はセロリを初めて使っています。助けていただければ幸いです。 TIA。

+2

両方のプロジェクトで同じブローカーを使用していますか?それはここの問題であるように見えます。両方に別々のブローカーを使用してみてください。 – anupsabraham

+1

セロリの設定をしてください。 – Jinje

答えて

1

セロリのドキュメントが言うように、

セロリは、分散メッセージパッシングに基づいて、非同期タスクキュー/ジョブキューです。

複数のタスクは、ループを介して作成されている場合は、あなたの労働者が同じであるため、タスクが均等にprojAprojBの労働者の労働者、すなわち、二つの異なる労働者に配布されています。

プロジェクトが似ている場合や、ほとんど同じことが言われている場合は、Celery Queueを使用できますが、プロジェクト間のキューは異なるはずです。 同じもののセロリのドキュメントはhereです。

settings.pyファイルにCELERY_DEFAULT_QUEUE,CELERY_DEFAULT_ROUTING_KEYCELERY_QUEUES を設定する必要があります。

あなたのファイルには、すべてのプログラムのコマンド行にキュー名が必要です。例については

command=celery -A project beat -l info -Q <queue_name>

そして、それは私の経験に基づいて、動作するはずです。

+0

ありがとう、私はキューを使用して終了しましたが、質問を更新しませんでした。私の悪い。しかし、答えは私が使ったものに似ています。 –

関連する問題