我正在Python项目中工作。
它的功能之一是有人从web应用程序中发送一些数据,将数据提前发送到移动设备。
对于此功能,应用程序使用第三方服务作为GCM和亚马逊SNS。以下是应用程序的数据流。
Web应用
由于Amazon端可能存在网络延迟、操作延迟和故障等问题,web应用程序使用芹菜作为调度器应用程序来实现异步、重试等行为,并将SNS发送任务存储在队列中并进行异步处理。
芹菜作为调度器使用RabbitMQ作为它的代理应用程序。以下是数据流。
Web >芹菜-> RabbitMQ -> Amazon > GCM -> Android设备
确定了一个与芹菜和RabbitMQ成分有关的问题。
我们可以看到当芹菜向RabbitMQ发送任务时,特定的RabbitMQ队列数会增加,这意味着芹菜成功地创建了一个任务对象并发送到队列中。
但是特定的任务永远存在于队列中(队列计数没有减少),并且没有继续向Amazon发送消息,这意味着芹菜不会再次从队列中选择存储的任务。
(我可以成功地将信息传递给SNS,绕过芹菜,这意味着没有与SNS的连接问题。)
哪种原因可能导致芹菜不能从RabbitMQ中选择存储的任务?
发布于 2018-04-11 05:24:46
您可以确定哪个是任务生产者,哪个是任务使用者。芹菜作为任务的消费者,我认为网络应用是任务的生产者。
数据流看起来像是"WebApp -> RabbitMQ(Broker) -> -> Celery“。
因此,确保芹菜经纪人配置正确,芹菜工人成功地开始工作。
更多信息请访问:芹菜经纪人配置
如果你想用芹菜作为定期任务的消费者。您可以访问芹菜周期任务
https://stackoverflow.com/questions/49766927
复制相似问题