芹菜 - 有顺序任务而不是并发?

时间:2012-07-23 18:34:38

标签: python rabbitmq celery django-celery

我有一些使用Amazon API的任务,限制为1 req /秒。

因此,我想将使用Amazon API的任务分组,并将它们排成队列。

我所知道的是如何将队列与每个任务相关联。但不知道如何删除特定队列中的并发。

有什么想法吗?

非常感谢! :)

1 个答案:

答案 0 :(得分:7)

单个工作程序从并发等于1的队列中消耗,可确保按顺序处理任务。换句话说,您可以创建一个特殊队列,并且只运行一个芹菜工作者,其并发性等于一个:

celery -A tasks worker -Q amazon_queue -c 1

并将任务提交到该队列:

tasks.add.apply_async(args=[1,2], kwargs={}, queue='amazon_queue')

或者对某些任务类型使用automatic routing