【问题标题】:whats the difference between using amqp backend and database backend for Celery results?对 Celery 结果使用 amqp 后端和数据库后端有什么区别?
【发布时间】:2012-04-20 01:52:28
【问题描述】:

我不明白在这两种情况下实际结果存储在哪里。
我在测试应用程序中使用 django-celerysqlite 作为我的数据库。我使用 RabbitMQ 作为我的代理。

我尝试设置CELERY_RESULT_BACKEND = "amqp" 并使用CELERY_RESULT_DBURI="mysqlitedb" 设置“数据库”

但无论哪种情况,我都不明白一旦结果存储后如何与结果进行交互。

我认为我无法理解有关一旦工作人员在任务结束时返回结果会发生什么的基本概念。

【问题讨论】:

  • 你问的是如何直接与数据库中的数据进行交互?我怀疑数据库只是用来存储队列,使用阻塞事务来创建分布式锁。我不希望有任何有用的持久数据。这只是我最好的猜测,我对芹菜内部没有直接的了解。

标签: python django rabbitmq celery


【解决方案1】:

当你向 celery 发送任务时,你会得到AsyncResult。它有一个id 属性,您可以将其存储在某处,然后使用result 来检查和检索任务执行的实际结果。

结果存储为 AMQP 或数据库表。首先速度更快,不会增加数据库负载,但需要一些额外的设置。

【讨论】:

  • yabut。谁和什么拥有结果,以及数据库后端与 amqp 后端相比有何不同。如果您在决定查看结果之前等待很长时间,则必须将其存储在某个地方。 Celery 2.5 的 Task_id - 稳定版本。
  • 那我不明白问题是什么。结果存储为 AMQP 或数据库表。首先速度更快,不会增加数据库负载,但需要一些额外的设置。还有什么?
  • 编辑您的回答以反映您的 cmets,以便我可以取消投票并检查您。是的,我的问题不清楚。我不清楚结果实际存储在 django-celery 中的什么位置,或者如何以 ORM 方式与结果进行交互。或者当它们堆积在数据库中时如何处理它们。
猜你喜欢
  • 2018-02-09
  • 2018-09-11
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多