求教 celery 的几个疑问

2017-07-17 21:12:19 +08:00
 746970179

这几天正在使用 celery 进行异步任务和定时任务的处理 目前的理解:

  1. beat 设置定时, 通过定时(有两种:一种是间隔指定时间如每个 10 秒钟, 一种是到达指定时间比如每天 12:34 分)将 task 加到队列中
  2. broker 指定队列的类型(redis, MQ 或其他等等), 可以设定多个队列(不过暂时只是知道, 没设置过, 感觉一个也差不多了, 不同优先级的对了什么的, 还有点远)
  3. worker 负责从队列中取出任务, 完成任务, 并将结果保存到 result_backend 中
  4. backend 保存 task 结果, 可以选择不同类型的 backend, 比如 redis, django-db

问题:

  1. django-celery-results 库, 只能保存 task_id, done_time, 无法保存 task_name, 任务的开始时间(其实有个 fork 版可以保存 task name, 单还是没有开始时间), 如何获取任务的开始时间? 主要是想监控每次任务的执行时间
  2. 使用 flower 监视的问题, flower 只能监视它开始之后的 task 的结果, 即如果 flower 开启的晚了, 历史的任务的结果全都没有了, 而且 flower 重启, 之前保存的结果也都没有了, 请问怎么办?
3444 次点击
所在节点    Django
2 条回复
TJT
2017-07-18 02:01:13 +08:00
Lihz
2017-07-18 09:31:04 +08:00
1. celery 日志可以抓到 task_name,task_id,任务开始时间,任务执行时间
2. flower 开启 persistent,是可以保存结果到指定 db 的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/375996

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX