2011-09-24 127 views
6

我正在运行一个Django网站,在那里我使用Celery实现预防性缓存 - 也就是说,我甚至在用户请求之前计算并缓存结果。如何在Celery中强制执行rate_limit?

但是,在某些情况下,我的一项Celery任务可能会被称为很多(实际上,我认为它比平均完成速度更快)。我想rate_limit它,以便它不会消耗大量的资源时,它实际上没有用。

但是,我想先了解Celery的celery.task.base.Task.rate_limit属性是如何执行的。任务被拒绝了吗?他们迟到并被处决了吗?

在此先感谢!

回答

16

费率有限的任务永远不会丢失,它们在工作人员内部排队,以便在允许他们运行时立即执行。

令牌桶算法没有指定丢弃数据包的任何内容(这是一个选项,但芹菜不这样做)。