Python Django芹菜不';t从RabbitMQ中选择任务

Python Django芹菜不';t从RabbitMQ中选择任务,python,rabbitmq,django-celery,Python,Rabbitmq,Django Celery,我在一个Python Django项目中工作 它的一个功能是,当有人从web应用程序发送一些数据时,将它们发送到移动设备 对于此功能,应用程序使用第三方服务作为&。下面是应用程序的数据流 Web应用------->Amazon SNS------->GCM------->Android 装置 由于Amazon SNS端可能存在网络延迟、操作延迟和故障,web应用程序使用作为调度程序应用程序来实现异步、重试等行为。芹菜将SNS发送任务存储在队列中并异步处理 Cellery作为调度器使用Rabbit

我在一个Python Django项目中工作

它的一个功能是,当有人从web应用程序发送一些数据时,将它们发送到移动设备

对于此功能,应用程序使用第三方服务作为&。下面是应用程序的数据流

Web应用------->Amazon SNS------->GCM------->Android 装置

由于Amazon SNS端可能存在网络延迟、操作延迟和故障,web应用程序使用作为调度程序应用程序来实现异步、重试等行为。芹菜将SNS发送任务存储在队列中并异步处理

Cellery作为调度器使用RabbitMQ作为其代理应用程序。下面是数据流

Web应用-->芹菜-->兔子MQ-->亚马逊SNS-->GCM-->Android 装置

确定了与芹菜和RabbitMQ组件相关的问题

我们可以看到,当芹菜向RabbitMQ发送任务时,特定的RabbitMQ队列计数会增加,这意味着芹菜成功创建了一个任务对象并发送到了队列

但特定任务永远存在于队列中(队列计数不会减少),并且不会继续将消息发送到Amazon SNS,这意味着芹菜不会再次从队列中拾取存储的任务

(我可以绕过芹菜成功地将消息推送到SNS,这意味着SNS没有连接问题。)


这可能会导致芹菜不从RabbitMQ中选择存储的任务?

您可以确定哪个是任务生产者,哪个是任务消费者。 芹菜是任务消费者,我认为web应用程序是任务生产者

数据流看起来像“WebApp->RabbitMQ(Broker)->芹菜”

因此,请确保芹菜代理配置正确,芹菜工作程序已成功启动

更多信息请访问:


如果你想用芹菜做周期性的任务消费者。您可以访问“所以,请确保芹菜代理配置正确”语句中的芹菜代理是什么意思?你是说RabbitMQ?是的,芹菜代理支持几个后端,比如redis、RabbitMQ、mysql。。代理将把序列化的任务保存在队列中。生产者将任务推送到代理,消费者从代理读取任务。在您提供的要点的帮助下,我可以解决这个问题。我不知道芹菜工人线程开始处理队列中的消息。因此,在我的设置中没有芹菜工人。所以,这个问题实际上和芹菜代理配置无关,但芹菜工人并没有启动。请你修改一下你的答案以强调这一点好吗。如果是这样,我可以认为你的答案是正确的。