私はタスクを呼び出してそのタスクのキューを作成しようとしています。存在しなければ、直ちに呼び出されたタスクをそのキューに挿入しようとしています。私は、次のコードを持っている:セロリの動的キューの作成とルーティング
@task
def greet(name):
return "Hello %s!" % name
def run():
result = greet.delay(args=['marc'], queue='greet.1',
routing_key='greet.1')
print result.ready()
、私はカスタムルーターを持っている:
class MyRouter(object):
def route_for_task(self, task, args=None, kwargs=None):
if task == 'tasks.greet':
return {'queue': kwargs['queue'],
'exchange': 'greet',
'exchange_type': 'direct',
'routing_key': kwargs['routing_key']}
return None
これは交換がgreet.1
と呼ばれ、キューがgreet.1
と呼ばれるが、キューが空で作成されます。この交換は、greet.1
のようなルーティングキーをgreet.1
というキューにルーティングする方法を知っているgreet
と呼ばれるだけです。
アイデア?
私はキューを手動で作成するのではなく、キューを作成して自動的に交換する新しいワーカーを生成して、自分の問題をより理にかなったものにすることをやめました。いつものように、返事をありがとう。 :) – Marconi