Задачи дочерних Celery не выполняются в правильных очередях на ECS
У меня есть проект django, который использует celery для управления задачами и rabbitmq для брокера. Задачи разделены на несколько очередей, и в продакшене эти очереди работают в отдельных контейнерах ECS. Все задачи периода, определенные в celery.py, запланированные через celery-beat, запускаются в правильных очередях, однако при определении очереди внутри задачи с помощью apply_async они всегда запускаются в очереди по умолчанию.
'default_task': {
'task': 'webapp.tasks.default_task',
'schedule': crontab(minute="*/1"),
},
'parent_task': {
'task': 'webapp.tasks.parent_task',
'schedule': crontab(minute="*/1"),
'options': {'queue' : 'secondary'}
},
@shared_task(ignore_result=True)
def parent_task():
qs = SomeModel.Objects.filter(status='in progress')
task_expiration = 3600
for sm in qs:
child_task.apply_async((sm.id,), expires=task_expiration, queue='secondary')
Я могу подтвердить, что задачи выполняются, но не в указанной очереди, что создает проблемы с таймингом из-за потенциальных шумных соседей в контейнере очереди по умолчанию.
Версии:
- django: 3.0.1
- celery: 5.0.0
- rabbitmq: 3.8.11
- python: 3.8