Ich versuche, eine Aufgabe aufzurufen und eine Warteschlange für diese Aufgabe erstellen, wenn es nicht vorhanden ist, dann sofort die aufgerufene Aufgabe in diese Warteschlange einfügen. Ich habe den folgenden Code:Sellerie dynamische Queue-Erstellung und Routing
@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()
dann habe ich einen benutzerdefinierten Router:
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
dies schafft ein Austausch genannt greet.1
und eine Warteschlange greet.1
genannt, aber die Warteschlange leer ist. Der Austausch sollte nur greet
genannt werden, der weiß, wie man einen Leitwegschlüssel wie greet.1
in die Warteschlange mit der Bezeichnung greet.1
leitet.
Irgendwelche Ideen?
Ich hörte auf, sich Sorgen über die Erstellung der Warteschlange manuell, stattdessen nur einen neuen Arbeiter spawn, die automatisch erstellt Warteschlange und Austausch, die mehr Sinn für mein Problem. Wie immer, danke für die Antwort. :) – Marconi