据我了解,Celery 是一个分布式任务队列,这意味着它唯一应该做的就是将任务/作业分派给其他服务器并取回结果。 RabbitMQ 是一个消息队列,仅此而已。但是,工作人员可以仅监听 MQ 并在收到消息时执行任务。这完全实现了 Celery 提供的功能,那么为什么还需要 Celery?
原文由 Kar 发布,翻译遵循 CC BY-SA 4.0 许可协议
据我了解,Celery 是一个分布式任务队列,这意味着它唯一应该做的就是将任务/作业分派给其他服务器并取回结果。 RabbitMQ 是一个消息队列,仅此而已。但是,工作人员可以仅监听 MQ 并在收到消息时执行任务。这完全实现了 Celery 提供的功能,那么为什么还需要 Celery?
原文由 Kar 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答862 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
你是对的,你根本不需要芹菜。在设计分布式系统时,有很多选择,没有适合所有情况的正确方法。
许多人发现让消息消费者池更灵活地等待消息出现在他们的队列中,做一些工作,并在工作完成后发送消息。
Celery 是一个将很多东西封装在一个包中的框架,但如果你真的不需要整个包,那么最好设置 RabbitMQ 并实现你所需要的,而不需要所有的复杂性。另外,除了Celery实现的任务队列场景,RabbitMQ还可以用于更多的场景。
但是,如果您确实选择了 Celery,那么在选择 RabbitMQ 时请三思。 Celery 的消息队列模型非常简单,它确实更适合 Redis 之类的东西而不是 RabbitMQ。 Rabbit 有一组丰富的选项,而 Celery 基本上忽略了这些选项。