2012-04-02 57 views
3

從閱讀Celery documentation,它看起來像我應該能夠使用下面的Python代碼清單上尚未被拾取的隊列任務:如何使用Django檢索尚未開始的Celery任務?

from celery.task.control import inspect 
i = inspect() 
tasks = i.reserved() 

但是,在運行該代碼時,該列表的任務是空的,即使有在隊列中等待的項目(我已經驗證他們肯定在使用django-admin的隊列中)。這同樣適用於使用命令行等效真:

$ celeryctl inspect reserved 

所以我猜測這是不是事實,這是什麼命令呢?如果不是,那麼檢索尚未開始的任務列表的可接受方式是什麼?我是否必須在代碼中維護自己的任務ID列表才能查詢它們?

我問的原因是因爲我試圖處理兩個任務排隊的情況,它們對數據庫中的同一對象執行寫入操作。如果兩個任務並行執行並且任務1比任務2花費的時間更長,它將覆蓋任務2的輸出,但是我想要最近的任務(即任務2)的輸出。所以我的計劃是取消所有正在運行的未決任務每次添加新任務時將一個對象寫入同一個對象。

感謝
湯姆

回答

0

您可以看到使用的scheduled代替reserved尚未完成的任務。

$ celeryctl inspect scheduled

+1

「celeryctl檢查計劃的」 只顯示ETA和倒計時任務。這就排除了常規任務,這對大多數工作負載來說是絕大多數。 – CryingCyclops 2013-10-30 20:35:11