Django & Celery - Problemas de roteamento
Estou usando o Django e o Celery e estou tentando configurar o roteamento para várias filas. Quando eu especificar uma tarefarouting_key
eexchange
(no decorador de tarefas ou usandoapply_async()
), a tarefa não é adicionada ao broker (que é o Kombu se conectando ao meu banco de dados MySQL).
Se eu especificar o nome da fila no decorador de tarefas (o que significa que a chave de roteamento será ignorada), a tarefa funcionará bem. Parece ser um problema com a configuração de roteamento / troca.
Alguma idéia do que o problema poderia ser?
Aqui está a configuração:
settings.py
INSTALLED_APPS = (
...
'kombu.transport.django',
'djcelery',
)
BROKER_BACKEND = 'django'
CELERY_DEFAULT_QUEUE = 'default'
CELERY_DEFAULT_EXCHANGE = "tasks"
CELERY_DEFAULT_EXCHANGE_TYPE = "topic"
CELERY_DEFAULT_ROUTING_KEY = "task.default"
CELERY_QUEUES = {
'default': {
'binding_key':'task.#',
},
'i_tasks': {
'binding_key':'important_task.#',
},
}
tasks.py
from celery.task import task
@task(routing_key='important_task.update')
def my_important_task():
try:
...
except Exception as exc:
my_important_task.retry(exc=exc)
Iniciar tarefa:
from tasks import my_important_task
my_important_task.delay()