Celery从同步队列运行任务

时间:2015-12-03 16:52:26

标签: python django multithreading python-2.7 celery

假设我有定期任务从客户处获得未处理的消息,然后运行任务以便按用户处理这些消息。 我可以为这个处理任务创建路由器,以便进程(" customer1_msgs")将进入队列" customer1_queue"但是如果芹菜工人(/ s)有空闲的处理空间,他们将同时获得这些任务。我不想同时为同一个客户处理消息,有没有办法让工作人员同时只为每个队列执行一个任务?

示例流程: periodic_task运行进程(" customer1_msgs"),进程(" customer2_msgs")。 芹菜正在处理customer2和customer1(可能需要很长时间) 然后经过一段时间后,定期任务将再次运行并运行流程(" customer2_msgs"),流程(" customer3_msgs") 假设第一个进程(" customer2_msgs")仍在处理消息,芹菜工作者将开始处理这些任务,并且我与第一次获取的仍在运行的进程(" customer2_msgs")有冲突定期任务 (周期性任务快速运行,处理消息需要很长时间)。

TL; DR版本: 如何在芹菜中实现同步队列? (队列中的任务一个接一个地运行,但其他队列也可以异步处理任务(每个队列一个任务))

使用python 2.7,django 1.4,celery(很快最新的稳定版),RabbitMQ消息代理(如果需要也有redis)在linux上运行debian 7 wheezy

0 个答案:

没有答案