分离芹菜消费者和生产者

use*_*194 7 python rabbitmq celery flask

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

谢谢你的帮助!

Lyc*_*cha 5

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

如果任务未在当前进程中注册,则可以使用send_task()来代替调用任务.

例:

from yourmodule.yourapp import celery
celery.send_task("yourtasksmodule.yourtask", args=["Hello World"])
Run Code Online (Sandbox Code Playgroud)

  • @ user2216194您能解释一下它是如何工作的吗?我和你一样遇到同样的问题 (2认同)