【问题标题】:Celery rpc vs amqp result backendCelery rpc vs amqp 结果后端
【发布时间】:2018-02-09 00:19:01
【问题描述】:

rpc 结果后端与 amqp 后端有何不同?我在changelog 中看到它替换了它,但是虽然它是作为协议编写的(带有://),但底层协议仍然是amqp,对吗?

例如,result_backend = 'rpc://'result_backend = 'amqp://'。如果我使用rpc 作为后端,当broker_use_ssl 标志设置为true 时它是否也使用SSL?

【问题讨论】:

  • celery 文档对此并不清楚。我记得我在某个地方遇到过使用 amqp 作为后端可能会引入性能开销的内容。我不记得链接了。我添加了一个赏金,希望有内幕知识的人可以解释 rpc 和 amqp 之间的不同之处,以及如何在它们之间进行选择。

标签: rabbitmq celery rpc amqp


【解决方案1】:

考虑一个场景,其中 4 个客户端必须分别排队 100 个任务。

如果是amqp 后端,它将创建 400 个唯一队列并将结果存储在这些队列中。

rpc 后端的情况下,它将仅创建 4 个队列(每个客户端 1 个)并在每个队列中存储 100 个结果,这会显着提高性能,因为没有为每个任务创建队列的开销。

因此,amqp 作为后端已被弃用,并将在下一个版本中完全删除。

rpc 后端使用相同的publish/consume mechanism of amqp。如果您将broker_use_ssl 设置为True,那么它将使用 SSL。

【讨论】:

  • 您介意进一步解释一下 celery 上下文中的 SSL 是什么吗?它与“安全套接字层”相同吗?我们应该如何决定是否启用broker_use_ssl
  • @CheokYanCheng 是的,是一样的。是否启用取决于您的客户端和服务器的连接方式,传输数据是否保密,或者您是否需要遵循 HIPAA 等标准。
  • 你能解释一下他们的结果持久行为是否不同。我遇到了与 stackoverflow.com/questions/34541282/… 类似的问题,我无法使用 rpc 启用 result_persistent。
  • @JialinZou 启用它时是否遇到任何错误?如果启用了result_persistent,它将持久化docs.celeryproject.org/en/latest/userguide/…
  • @ChillarAnand 没有错误,我可以在 amqp 和 rpc 中启用 result_persistent。不同之处在于,当我使用 amqp 时,我可以通过 AsyncResult(task_id) 在另一个 Python 解释器中检索结果。然而,使用 rpc,这只适用于同一个解释器。不确定这是一个错误还是设计的。我在 Celery 文档中没有找到答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 2018-09-11
  • 2012-01-15
  • 1970-01-01
相关资源
最近更新 更多