芹菜任务与eta从RabbitMQ中删除

时间:2015-12-28 14:25:13

标签: python django multithreading celery

我正在使用Django 1.6RabbitMQ 3.5.6celery 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

在Django设置中,

CELERY_ACKS_LATE设置为True。我找不到任何可能的原因。

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

1 个答案:

答案 0 :(得分:1)

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