Celery:你应该什么时候选择Redis作为RabbitMQ上的消息代理?

Pig*_*Pig 22 python django rabbitmq redis celery

我粗略的理解是,如果您需要内存中的键值存储功能,Redis会更好,但是我不确定这与分发任务有什么关系?

这是否意味着我们应该将Redis用作消息代理,如果我们已经将其用于其他内容?

Mar*_*ian 32

我最近使用过(2017-2018),它们与Celery 4都非常稳定.所以你的选择可以基于你的主机设置的细节.

  • 如果您必须使用Celery版本2或版本3,请使用RabbitMQ.除此以外...
  • 如果您出于任何其他原因使用Redis,请使用Redis
  • 如果您在AWS托管,请使用Redis,以便您可以使用托管Redis作为服务
  • 如果您讨厌复杂的安装,请使用Redis
  • 如果您已经安装了RabbitMQ,请继续使用RabbitMQ

在过去,我会推荐RabbitMQ,因为它比使用Redis更安静,更容易设置Celery,但我不相信这是真的.

  • 使用Redis / python 3.7 / Celery 4.2的一个烦人之处在于结果后端无法正常工作,因为`async`现在已成为python的一部分(参见https://github.com/celery/celery/issues/4849)-应该用芹菜固定4.3。我不知道这是否也会影响RabbitMQ。 (4认同)
  • 但是,Celery 4.3现在已经发布,因此这不再是问题-结果后端可以与Redis一起使用。 (4认同)
  • 现在,除了activemq之外,Amazon MQ还提供rabbitmq代理,我已经使用过它并且运行良好。 (4认同)
  • 截至 2019 年 7 月,SQS 标记为稳定。然而,它缺乏监测和控制渠道。此外,SQS 的行为有点违反直觉。由于至少一次传递政策,我们已将消息处理了多达 14 次。 (3认同)
  • 您还可以将 Celery 与 Amazon SQS 结合使用,部署和运行非常简单 (2认同)