Celery中的速率限制是如何执行的?

6 投票
1 回答
1236 浏览
提问于 2025-04-17 03:01

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

不过,我有一个Celery任务在某些情况下可能会被调用很多次(其实比它完成的速度要快一点)。我想给它设置一个速率限制,这样在不太需要的时候就不会消耗太多资源。

不过,我想先了解一下Celery的celery.task.base.Task.rate_limit这个属性是怎么执行的。任务会被拒绝吗?还是会被延迟执行,等到稍后再执行?

提前谢谢你!

1 个回答

16

被限制速率的任务不会被丢掉,它们会在后台的工作程序中排队,等到可以执行的时候再运行。

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

撰写回答