芹菜任务与eta从RabbitMQ中删除

Emi*_*ral 9 python django multithreading celery

我使用Django 1.6,RabbitMQ 3.5.6,celery 3.1.19.

有一个周期性任务,每30秒运行一次,并使用给定eta参数创建200个任务.在我运行芹菜工作者之后,慢慢地在RabbitMQ中创建了队列,我看到大约1200个计划任务等待被解雇.然后,我重新启动芹菜工作者,所有等待的1200个计划任务都从RabbitMQ中删除.

我如何创建任务: my_task.apply_async((arg1, arg2), eta=my_object.time_in_future)

我像这样运行工人: python manage.py celery worker -Q my_tasks_1 -A my_app -l

CELERY_ACKS_LATE被设置为True在Django设置.我找不到任何可能的原因.

我应该使用不同的配置/标志/参数运行worker吗?任何的想法?

the*_*row 1

据我所知,Celery 不依赖于 RabbitMQ 的调度队列。它在内部实现了 ETA/倒计时。
看来您有足够的工作人员能够获取足够的消息并在内部安排它们。
请注意,您不需要 200 名工人。您已将预取乘数设置为默认值,因此您需要更少的值。