擅长:python、mysql、java
<p>我要在这里补充一个答案,因为这是今天第二次有人推荐芹菜时不需要根据这个答案我怀疑。因此,分布式任务队列和代理之间的区别在于,代理只传递消息。没有更多,没有更少。芹菜建议使用RabbitMQ作为IPC的默认代理,并将其放在适配器的顶部,以便使用守护进程管理任务/队列。虽然这对于分布式任务特别有用,因为在分布式任务中,您很快就需要一些通用的东西。它只是为发布者/消费者流程构建的。在实际任务中,如果您定义了需要逐步完成的工作流,并根据您的特定需要确保消息的持久性,那么最好编写自己的发布者/消费者,而不是依赖芹菜。显然,你仍然需要做所有的耐久性检查等。对于大多数与web相关的服务,一个并不控制实际的“工作”单元,而是把它们传递给一个服务。因此,除非您基于ip/地理区域或帐号达到某个任意的API调用限制,否则对于分布式任务队列几乎没有意义。。。或者类似的东西。因此,使用芹菜并不能阻止您编写或处理状态代码或工作流管理等,它以一种便于您避免编写发布者/消费者代码结构的方式公开AMQP。</p>
<p>简言之,如果您需要一个简单的任务队列来仔细检查工作,并且您并不真正关心性能的细微差别、工作流或实际发布/使用流程的复杂性。芹菜管用。如果你只是将消息传递给一个你实际上并不控制的api或服务,当然,你可以使用芹菜,但你也可以在几分钟内用Pika轻松地创建自己的发布者/消费者。如果您需要一些健壮的或者符合您自己的持久性场景的代码,请像其他人一样编写您自己的发布/使用者代码。</p>