为什么使用Celery而不是RabbitMQ?

Kar*_*Kar 65 python message-queue rabbitmq celery

根据我的理解,Celery是一个分布式任务队列,这意味着它应该做的唯一事情是将任务/作业分派给其他服务器并获得结果.RabbitMQ是一个消息队列,仅此而已.但是,工作人员只能在收到消息时监听MQ并执行任务.这完全符合Celery的要求,为什么需要Celery呢?

Mic*_*lon 55

你说得对,你根本不需要芹菜.当您设计分布式系统时,有很多选项,并且没有正确的方法来处理适合所有情况的事情.

许多人发现让消息使用者池等待消息出现在队列中,做一些工作以及在工作完成时发送消息更灵活.

Celery是一个包装了很多东西的框架,但是如果你真的不需要整个软件包,那么最好设置RabbitMQ并实现你需要的东西而不需要复杂的东西.此外,除了Celery实现的任务队列场景之外,RabbitMQ还可以用于更多场景.

但如果你选择Celery,那么请三思而后行Rab​​bitMQ.Celery的消息排队模型很简单,它真的更适合像Redis这样的东西而不是RabbitMQ.Rabbit拥有丰富的选项,Celery基本上忽略了这些选项.

  • "兔子有一套丰富的选择,芹菜基本上忽略了".这是真的,但有点误导.例如,您可以在Rabbit层中设置不受Celery控制的路由规则,但确实会影响Celery任务的路由和使用.无论您是希望路由器由调用者,Celery自定义路由器还是交换机制处理,都是一个设计问题.确实,那些兔子配置对于芹菜来说是"隐形的",但这并不意味着它们没有有用的效果. (5认同)

mjt*_*lyn 29

Celery基本上提供了一个很好的界面,可以完成您所说的内容,并为您处理所有配置.是的,你可以手工完成,但你只需要重写芹菜.

  • 还有操作元素.Celery的大部分用于可靠性(例如,在序列化特定异常时不会崩溃等),以及管理工作者和工作者集群. (6认同)