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

求教 celery 的几个疑问

  •  
  •   746970179 · 2017-07-17 21:12:19 +08:00 · 3424 次点击
    这是一个创建于 2446 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这几天正在使用 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
    TJT
        1
    TJT  
       2017-07-18 02:01:13 +08:00
    Lihz
        2
    Lihz  
       2017-07-18 09:31:04 +08:00   ❤️ 1
    1. celery 日志可以抓到 task_name,task_id,任务开始时间,任务执行时间
    2. flower 开启 persistent,是可以保存结果到指定 db 的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2908 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:03 · PVG 08:03 · LAX 17:03 · JFK 20:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.