分离芹菜消费者和生产者

时间:2013-10-28 19:47:15

标签: python flask rabbitmq celery

我希望我写的电子邮件服务与我的烧瓶应用程序完全分离。我正在使用带有rabbitmq的芹菜。所以我想知道是否有一种方法可以配置芹菜,以便在一个项目中我有Flask应用程序将消息发送到队列(生产者)。在另一个项目中,我运行了芹菜实例,它监听消息并执行任务(使用者)。我仍然对通信如何正常工作感到困惑?我是否将API(发送电子邮件)放入我的烧瓶应用程序或芹菜项目中?最后,我想将Flask应用程序和Celery实例放在不同的EC2实例中 - 使用rabbitmq充当消息代理。

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

您可以使用Celery的send_task函数通过RabbitMQ使用任务名称将任务发送给worker。您仍然需要导入您拥有芹菜应用程序的模块:

  

如果任务未在当前流程中注册,则可以使用   send_task()通过名称调用任务。

示例:

from yourmodule.yourapp import celery
celery.send_task("yourtasksmodule.yourtask", args=["Hello World"])