Django Celery速率限制设置未按预期运行

时间:2018-11-16 00:35:52

标签: celery celery-task rate-limiting

我使用以下命令创建一个工作线程:

celery -A proj worker -l info --concurrency=50 -Q celery,token_1 -n token_1

在我的任务中,我将速率限制设置为4000/m

但是,当我开始运行集合时,我注意到处理的平均任务大约在10-20/s左右(启用了速率限制规则4000/m)。 然后,我删除了速率限制规则,现在任务速率达到60 / s左右。

我很困惑,因为我的速率限制为4000/m,相对来说65/s。为什么最后只用10-20/s ???????? (我已经为该工人设置了50个线程。...)

1 个答案:

答案 0 :(得分:1)

您误解了芹菜限速作用。 'According to the documentation on version 4.2

  

通过添加“ / s” `,“ / m” “ / h” <,可以以秒,分钟或小时为单位指定速率限制/ em>的值。任务将在指定的时间段内平均分配。

     

示例: 'Hello' != 'Hello,' (每分钟执行数百个任务)。这将强制在同一工作实例上启动两个任务之间的最小延迟为600毫秒。

本质上,芹菜在您的任务之间增加了强制延迟。由于每个任务已经在大约16毫秒(1/60秒)内完成处理,因此在任务之间再加上16毫秒的强制延迟会降低它们的处理速度。