は私がのがとBそれらを呼びましょう、同じDjangoプロジェクトの2つのコピーを実行するマシンを持っている、と私は背景を処理するためにセロリを使用したいですタスク。セロリ、特定のキューにルーティングDjangoプロジェクト内のすべてのタスクを
スーパーバイザをセットアップして、プロジェクトごとに2人のワーカーを立ち上げましたが、タスクが両方のプロジェクトで同じ名前になっていると、間違った作業者によってタスクが実行されることがあります。
次のステップでは、-Q queueName
パラメータを使用して、別のキューを各ワーカーに使用しました。 rabbitmqctl list_queues
を使用すると、両方のキューが作成されていることがわかりました。私は労働者を発行するために使用しているコマンドは
python3 -m celery worker -A project -l INFO -Q q1 [email protected]
と
python3 -m celery worker -A project -l INFO -Q q2 [email protected]
の質問は、どのように私のルートプロジェクトにキューからすべてのタスク、およびすべてですプロジェクトからのタスク〜キューB?はい、キューを選択するためにtask
デコレータにパラメータを追加できますが、グローバル設定などを探しています。
編集1:私はCELERY_DEFAULT_QUEUE
を試してみましたが、動作しません。設定は無視されます。私はまた、このように、ダムルーターを作成しようとしました:
class MyRouter(object):
def route_for_task(self, task, args=None, kwargs=None):
return 'q1'
CELERY_ROUTES = (MyRouter(),)
そして、それは(明らかに、各プロジェクト内の異なるキューを返す)動作しますが、私は、なぜCELERY_DEFAULT_QUEUE
設定は無視されて困惑していますか?
すべてのタスクをリストする必要はありますか?ワイルドカードのようなものはありませんか? –
いいえ、私は知らない。 –