2012-09-05 190 views
3

我正在調查芹菜關於較長時間運行任務的功能,用戶想要觀察進度。該應用程序基於Django,任務通過RPC啓動,並涉及將數據庫與文件系統上的文件同步。芹菜任務更新

從任務內我想登錄幾個級別(WARN,ERROR,INFO,...),我也希望用戶根據日誌級別過濾消息,所以我猜測記錄到我的數據庫將是可行的。

我的問題是:

  • 最好先登錄到我的Django的應用程序使用同一個數據庫?
  • 如何設置芹菜使用Pythons標準日誌模塊登錄數據庫?

回答

3

爲什麼不更新與當前狀態和查詢使用任務ID的任務。然後,您將透明地使用您配置的後端,而不是重載數據庫。

請解釋技術here

YourTaskObject(Task): 
    run(self, **kwargs): 
     while true: 
      # do some work 
      self.backend.store_result(self.request.id, result={"percent_done": number}, status="PROGRESS") 

然後你只需要使用的AsyncTask結果:

result = YourTaskObject.AsyncResult(task_id=task_id) 
if not result.ready(): 
    progress = result.result.percent_done 
else: 
    ... 
+0

你的做法是絕對有趣,因爲它不涉及任何數據庫/除了後端文件它需要反正。我會進一步調查它。 – Constantinius

+0

它使用你配置的任何後端。這可能是你的數據庫,或者它可能是rabbitmq或redis或mongodb。 –