2012-09-05 192 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。 –