如何对芹菜队列加价?

Vik*_*ngh 21 celery

我在芹菜文档中读到了这个:

Task.rate_limit http://celery.readthedocs.org/en/latest/userguide/tasks.html#Task.rate_limit

请注意,这是每个工作人员实例速率限制,而不是全局速率限制.要强制实施全局速率限制(例如,对于每秒最大请求数的API),必须限制到给定队列.

如何对芹菜队列进行限速?

谢谢你不要对这个问题进行投票.

Vik*_*ngh 9

事实证明,它不能在队列级别为多个工作人员完成.可以在1个工作人员的队列级别完成IT.或者在每个工作人员的队列级别.

所以,如果你对5名工人说每分钟10个工作岗位.您的员工将每分钟处理多达50个工作.

因此,要一次只运行10个作业,您要么选择一个工作者.或者选择5名工人,限制为2 /分钟.

  • 对于 2019 年,我创建了一个示例,说明如何在使用 Celery + Django + Redis 时将速率限制集成到您的任务中(在放弃 Celery 缺乏速率限制功能或文档之后,这可能是由于不同的应用程序要求而有意为之):https ://gist.github.com/Vigrond/2bbea9be6413415e5479998e79a1b11a (3认同)
  • 一些细节如何 - 例如,你如何告诉工人只做"2 /分钟"? (2认同)
  • 在搜索这个问题的答案后,我发现只有在任务级别才可以进行速率限制。Celery 不支持队列级别速率限制。 (2认同)
  • 我采用了@Vigrond的解决方案并将其扩展至此处:/sf/answers/4631324141/ (2认同)