タスクの名前に基づいてタスクをルーティングするセロリを取得しようとしています...基本的に、私は 'worker.some_name'と 'web.some_name' '、私はworkerとwebと呼ばれる2つの異なるキューをそれぞれ使用します。私は、すべてのワーカー・タスクをワーカー・キューに入れたいと思います。現在、私はこのような大きなCELERY_ROUTES辞書があります。CELERY_ROUTES - タスク名に基づいてルーティングする方法
CELERY_ROUTES = {
"web.some_name": {
"queue": "web"
},
"web.some_other_name": {
"queue": "web"
},
etc.... }
をしかし、私はより一般的なような何か希望:
CELERY_ROUTES = (MyRouter(),)
class MyRouter(object):
def route_for_task(self, task, args=None, kwargs=None):
if task.split('.')[0] == "worker":
return {"queue": "worker"}
return {"queue": "web"}
をしかし、これは動作するようには思えません。何か案は?ありがとう。
:http://celery.readthedocs.org/ en/latest/userguide/routing.html#amqp-primer – Tendrid
メッセージブローカーとしてredisで動作しますか? http://celery.readthedocs.org/en/latest/userguide/routing.html#manual-routingでワイルドカードを使用した手動ルーティングの例を使用することができません。 – odedfos