我使用以下命令创建一个工作线程:
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个线程。...)
答案 0 :(得分:1)
您误解了芹菜限速作用。 'According to the documentation on version 4.2:
通过添加“ / s” `,“ / m” 或“ / h” <,可以以秒,分钟或小时为单位指定速率限制/ em>的值。任务将在指定的时间段内平均分配。
示例:
'Hello' != 'Hello,'
(每分钟执行数百个任务)。这将强制在同一工作实例上启动两个任务之间的最小延迟为600毫秒。
本质上,芹菜在您的任务之间增加了强制延迟。由于每个任务已经在大约16毫秒(1/60秒)内完成处理,因此在任务之间再加上16毫秒的强制延迟会降低它们的处理速度。