Sto provando a chiamare un'attività e creare una coda per quell'attività se non esiste, quindi inserire immediatamente in tale coda l'attività chiamata. Ho il seguente codice:Creazione e instradamento dinamico della coda di Celery
@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()
poi ho un router personalizzato:
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
questo crea uno scambio chiamato greet.1
e una coda di chiamata greet.1
ma la coda è vuota. Lo scambio dovrebbe essere chiamato semplicemente greet
che sa come instradare una chiave di routing come greet.1
alla coda chiamata greet.1
.
Qualche idea?
Ho smesso di preoccuparmi di creare la coda manualmente, invece ho appena generato un nuovo operatore che crea coda e scambio automaticamente che ha più senso per il mio problema. Come sempre, grazie per la risposta. :) – Marconi