我正在使用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
。我找不到任何可能的原因。
我应该使用不同的配置/标志/参数运行worker吗?有什么想法吗?
答案 0 :(得分:1)
据我所知,Celery并不依赖RabbitMQ的预定队列。它在内部实现ETA /倒计时 您似乎有足够的工作人员能够获取足够的消息并在内部安排它们 请注意,您不需要200名工人。您将预取乘数设置为默认值,因此您需要更少。