2011-09-24 280 views
6

我正在運行一個Django網站,在那裏我使用Celery實現預防性緩存 - 也就是說,我甚至在用戶請求之前計算並緩存結果。如何在Celery中強制執行rate_limit?

但是,在某些情況下,我的一項Celery任務可能會被稱爲很多(實際上,我認爲它比平均完成速度更快)。我想rate_limit它,以便它不會消耗大量的資源時,它實際上沒有用。

但是,我想先了解Celery的celery.task.base.Task.rate_limit屬性是如何執行的。任務被拒絕了嗎?他們遲到並被處決了嗎?

在此先感謝!

回答

16

費率有限的任務永遠不會丟失,它們在工作人員內部排隊,以便在允許他們運行時立即執行。

令牌桶算法沒有指定丟棄數據包的任何內容(這是一個選項,但芹菜不這樣做)。