根据我的理解,Celery是一个分布式任务队列,这意味着它应该做的唯一事情是将任务/作业分派给其他服务器并获得结果。 RabbitMQ是一个消息队列,仅此而已。但是,工作人员只能在收到消息时监听MQ并执行任务。这完全达到了Celery所提供的,所以为什么需要Celery呢?
答案 0 :(得分:47)
你说得对,你根本不需要芹菜。当您设计分布式系统时,有很多选项,并且没有正确的方法来处理适合所有情况的事情。
许多人发现让消息使用者池等待消息出现在队列中,做一些工作以及在工作完成时发送消息更灵活。
Celery是一个包装了很多东西的框架,但如果你真的不需要整个软件包,那么最好设置RabbitMQ并实现你需要的东西,而不是复杂性。此外,除了Celery实现的任务队列场景之外,RabbitMQ还可以用于更多场景。
但是如果你确实选择了芹菜,那么请考虑一下RabbitMQ。 Celery的消息排队模型很简单,它真的更适合像Redis这样的东西而不是RabbitMQ。 Rabbit拥有丰富的选项,Celery基本上忽略了这些选项。
答案 1 :(得分:27)
Celery基本上提供了一个很好的界面来完成您所说的内容,并为您处理所有配置。是的,你可以手工完成,但你只需要重写芹菜。