【问题标题】:Celery - Having sequential tasks rather than concurrent?芹菜 - 有顺序任务而不是并发?
【发布时间】:2012-07-23 18:34:38
【问题描述】:
我有一些使用 Amazon API 的任务,限制为 1 个请求/秒。
因此,我想对使用 Amazon API 的任务进行分组,并将它们排成一个顺序队列。
我想出的只是如何将队列与每个任务相关联。但不知道如何删除特定队列中的并发。
有什么想法吗?
非常感谢! :)
【问题讨论】:
标签:
python
rabbitmq
celery
django-celery
【解决方案1】:
单个工作线程从队列中消费,并发等于一,确保任务将按顺序处理。换句话说,您可以创建一个特殊的队列并只运行一个并发等于一的 celery worker:
celery -A tasks worker -Q amazon_queue -c 1
并将任务提交到该队列:
tasks.add.apply_async(args=[1,2], kwargs={}, queue='amazon_queue')
或者对某些任务类型使用automatic routing。