这几天正在使用 celery 进行异步任务和定时任务的处理
目前的理解:
- beat 设置定时, 通过定时(有两种:一种是间隔指定时间如每个 10 秒钟, 一种是到达指定时间比如每天 12:34 分)将 task 加到队列中
- broker 指定队列的类型(redis, MQ 或其他等等), 可以设定多个队列(不过暂时只是知道, 没设置过, 感觉一个也差不多了, 不同优先级的对了什么的, 还有点远)
- worker 负责从队列中取出任务, 完成任务, 并将结果保存到 result_backend 中
- backend 保存 task 结果, 可以选择不同类型的 backend, 比如 redis, django-db
问题:
- django-celery-results 库, 只能保存 task_id, done_time, 无法保存 task_name, 任务的开始时间(其实有个 fork 版可以保存 task name, 单还是没有开始时间), 如何获取任务的开始时间? 主要是想监控每次任务的执行时间
- 使用 flower 监视的问题, flower 只能监视它开始之后的 task 的结果, 即如果 flower 开启的晚了, 历史的任务的结果全都没有了, 而且 flower 重启, 之前保存的结果也都没有了, 请问怎么办?