V2EX 首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Django

求教 celery 的几个疑问

  •  
  •   746970179 · 124 天前 · 588 次点击
    这是一个创建于 124 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这几天正在使用 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 重启, 之前保存的结果也都没有了, 请问怎么办?
    2 回复  |  直到 2017-07-18 09:31:04 +08:00
        2
    Lihz   124 天前   ♥ 1
    1. celery 日志可以抓到 task_name,task_id,任务开始时间,任务执行时间
    2. flower 开启 persistent,是可以保存结果到指定 db 的
    DigitalOcean
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   1800 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.0 · 48ms · UTC 12:17 · PVG 20:17 · LAX 04:17 · JFK 07:17
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1