我正在研究芹菜在较长时间运行的任务方面的功能,用户希望在这些任务中观察进度。该应用程序基于Django,任务通过RPC启动,涉及将数据库与文件系统上的文件同步。
从任务中,我想登录几个级别(WARN、ERROR、INFO…),我还希望用户根据日志级别过滤消息,所以我想登录到我的数据库是可行的。
我的问题是:
- 是否建议登录到Django应用程序正在使用的同一数据库
- 如何使用Python标准的日志记录模块设置芹菜来登录数据库
为什么不使用当前状态更新任务并使用任务id进行查询呢?然后,您可以透明地使用您配置的后端,而不是重载数据库。
Ask在这里解释技巧。
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:
...