2015-02-11 128 views
1

我在django項目中使用了芹菜,我有一個每分鐘運行一次的芹菜計劃任務,並在數據庫中檢查是否有新任務啓動,並且配置的任務還有一個時間開始和持續時間。定期執行Celery任務監視任務

這個週期任務的任務是:如果有配置newone

  • 啓動一個新的異步任務。 (task.delay(...))
  • 檢查以前的一個任務開始運行超過其持續時間(app.control.revoke(...))
  • 停止任務
  • ....和其他的東西...

但問題是:什麼是「最佳實踐」來監視週期性任務內啓動的異步任務的狀態?

我的意思是每次調度任務運行,我從數據庫獲取所有配置的任務(開始,開始....),但我沒有相關的芹菜任務ID,我應該存儲芹菜任務ID內的數據庫,以使數據庫任務關聯到相關的任務芹菜運行?

django芹菜可以幫我嗎?

謝謝。

回答

1

芹菜會使用結果後端自動跟蹤狀態。如果你想存儲使用Django ORM這種狀態下,然後是Django的芹菜可與幫助:

http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html#using-the-django-orm-cache-as-a-result-backend

http://docs.celeryproject.org/en/latest/userguide/tasks.html#result-backends

http://docs.celeryproject.org/en/latest/configuration.html#task-result-backend-settings

一兩件事,也可以幫助芹菜有幾個用於停止超過其持續時間的任務的功能。

您可以使用配置設置全侷限制:

http://docs.celeryproject.org/en/latest/configuration.html#celeryd-task-time-limit

可以使用裝飾參數每個任務類型設置過期時間:

http://docs.celeryproject.org/en/latest/userguide/tasks.html#list-of-options

您可以設置過期時間按預定例如:

http://docs.celeryproject.org/en/latest/userguide/calling.html#expiration

+0

感謝您的回答,但我可以管理這些任務存儲在python腳本中的結果後端內,如果可以的話,我可以在哪裏找到示例?再次感謝! – 2015-02-12 08:03:31

+0

「管理」任務是什麼意思?通常,結果後端用於將任務的狀態存儲在數據庫中,以便您可以輕鬆查詢狀態,獲取結果,檢查錯誤並構建諸如狀態儀表板或歷史指標之類的內容。 – 2015-02-13 02:08:59