2016-03-01 105 views
3

我正在構建一個用於在Celery框架之上執行任務的框架。Celery任務歷史

我想看到的最近執行的任務的列表(最近2-7天)。

找上了API我可以找到app.backend對象,但無法弄清楚如何使查詢獲取任務。

例如,我可以像使用Redis的或後端數據庫。我不想顯式地將SQL查詢寫入數據庫。

有沒有辦法與API任務歷史/結果工作?

我試圖用花,但它只能處理事件和其開始之前無法獲得的歷史。

+2

退房Django的芹菜,我認爲它已經提供了任務 – Ale

+0

管理員看來你可能是正確的。我不想在這個項目中使用django,但它可能需要djcelery提供的相同功能。 – baldr

回答

1

您需要將任務結果保留在後端,例如Redis。芹菜文件包含有關如何做到這一點這裏的信息:

http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html#keeping-results

而且你要設置的CELERY_TASK_RESULT_EXPIRES配置參數,因爲默認情況下,結果在一天後丟棄。

如果你這樣做,那麼花會告訴你任務執行的從什麼時候開始的歷史,irregardless。

+0

是的,我試過這種方式,但它不起作用。這就是我問的原因。在花的來源中,我發現它僅適用於事件。通過後端API,可以獲得任務的結果,但只知道它是ID。這可能是'djcelery'將是我最需要的。 – baldr

+0

@baldr你是如何解決這個問題的?我有同樣的問題... – Kapucko

+0

@Kapucko,我留下了一個想法,用芹菜解決這個問題。當任務開始時,我在數據庫中創建一個新記錄。我終於把這個項目交給了django。 – baldr

2

可以使用的persisent選項,如:flower -A ctq.celery --persistent=True

+0

這是爲什麼倒投了?這似乎是合理的。誰投下了票請澄清,因爲我想知道爲什麼這是一個壞主意。 – digitaldavenyc

+0

這是個不錯的主意。因爲我用中文而投下了票! 23333 –