【问题标题】:How to check if celery result backend is working如何检查芹菜结果后端是否正常工作
【发布时间】:2016-08-29 05:10:05
【问题描述】:

我正在使用带有 redis 的 celery。

当前 redis 用作代理和结果后端。

BROKER_TRANSPORT = 'redis'
BROKER_URL = 'redis://domain:8888/0'
CELERY_RESULT_BACKEND = 'redis://domain:8888/0'

我想清除一些东西

  1. 使用结果后端有什么好处。我的意思是我会用它得到什么
  2. 我怎样才能看到它的工作。我的意思是有些东西会存储在redis中。 Wll 存储是永久的。我该如何查询?该存储量会随着时间的推移而增长吗?等
  3. 我可以用芹菜花监控结果后端的东西吗

【问题讨论】:

    标签: python redis celery


    【解决方案1】:

    结果后端就像它听起来的样子,它所做的只是存储任务的结果。

    假设您有以下实际返回值的任务。

    @task
    def sum(x, y):
        return x + y
    

    在某些时候,您调用此任务。如果您没有结果后端,get() 将抛出错误(或警告,我忘记了)。如果您确实有结果后端(并假设它已正确配置),task.get() 将轮询您的 redis 后端以获取与 task 关联的 task_id 的结果,然后通过您指定的任何序列化程序将其返回给您。

    from tasks import sum
    
    task = sum.delay(3, 4)
    task.get()
    

    您可以通过调用get()(并等待完成)处理您发送给代理的任务来查看它的工作原理。您可以阅读有关使用 celery results from the official documentation 的更多信息。

    原则上,您可以从 redis-cli 轮询您的 redis 数据库,但我认为没有理由这样做。您可以通过转到实际任务详细视图之一并检查“基本任务选项”表下的“结果”字段来查看结果。例如http://flower.myserver.com/task/

    【讨论】:

    • 谢谢你,我明白了。我不清楚的一件事是,芹菜在哪里存储所有这些信息,如 task_id,执行该任务的工作人员等。它是否进入 Redis。该信息是否永久> 因为我看到如果我重新启动芹菜花,那么任务选项卡中的所有任务都消失了。看起来该信息不是持久的
    • 是的,它都存储在代理中。在您的特定情况下,这似乎是一个 redis-database ,它是一个内存数据库。这些信息确实不是持久的(按设计!)如果你想持久化你的 redis 数据库,请从redis-documentation regarding redis-peristence 阅读如何做到这一点。如果持久性将成为您用例的重要组成部分,您可能希望研究更强大的代理,例如涉及更多的 RabbitMQ,但允许在突然关闭时保留队列中的数据。
    • 您认为我手动将我的任务状态存储在数据库中的任务执行代码中以查看发生的全部历史记录是否有意义,以便万一我需要从日志消息中检查一些 task_id然后我可以直接从数据库中查看相关步骤、结果等
    • 这是否有意义完全取决于您,因为您了解自己的需求和目标是什么。也就是说,这是我的 0.02 美元。如果您不打算在代码中实际使用结果,则使用结果后端毫无意义,特别是如果唯一的最终用途是定期交叉引用您的日志。您可以改为从任务中记录结果,而不是将其与任务 ID 一起返回(请参阅celery docs on logging。)Redis 是轻量级的,所以我想说,保持这种方式!
    【解决方案2】:

    问题已经回答了。所以,我想展示一下 celery 在 DB 中存储的快照,以提供一个想法。

    这里,我使用 celery 和 MySQL 数据库的默认设置为result_backend

    它已经创建了两个表:

    1. celery_taskmeta

    2。 celery_taskset_meta

    【讨论】:

      猜你喜欢
      • 2016-06-03
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 2013-08-10
      • 2019-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多