Celery中如何执行速率限制?

6
我正在运行一个Django网站,使用Celery实现预防性缓存——也就是说,我会在用户请求之前计算和缓存结果。

然而,我的某个Celery任务在某些情况下可能被频繁调用(实际上比平均完成时间稍微快一些)。 我想将其限制速度,以便在实际上并没有太多用处时不会消耗过多的资源。

但首先,我想了解Celery的celery.task.base.Task.rate_limit属性是如何执行的。 任务会被拒绝吗? 它们会被延迟并稍后执行吗?

提前感谢!

1个回答

16

对于受速率限制的任务,它们从不会被丢弃,而是在工作进程内部排队,以便它们一旦允许运行就会立即执行。

令牌桶算法并没有规定丢弃数据包(这是一种选项,但Celery不会这样做)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接