2013-10-28 32 views
7

我希望我寫的電子郵件服務與我的瓶子應用程序完全分離。我正在用rabbitmq使用芹菜。所以我想知道是否有一種方法可以配置芹菜,以便在一個項目中,我有將消息發送到隊列(生產者)的Flask應用程序。在另一個項目中,我運行celery實例,監聽消息並執行任務(消費者)。我仍然對通信如何正確工作感到困惑。我是否將API(發送電子郵件)放入燒瓶應用程序或芹菜項目中?最終,我想在不同的EC2實例中使用Flask應用程序和Celery實例 - rabbitmq充當消息代理。分離芹菜消費者和生產者

感謝您的幫助!

回答

5

您可以使用Celery的send_task函數通過RabbitMQ將任務發送給使用任務名稱的工作人員。你仍然需要進口,你有芹菜應用模塊:

如果任務沒有在當前的過程中,你可以使用 send_task()的名稱,而不是調用任務的註冊。

例子:

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

我想知道是否有可能做到這一點,但不導入我的模塊(因爲我對把它放在不同的服務器實例計劃)。由於芹菜需要在管道的兩側(rabbitmq),我的問題是 - 我可以從芹菜子類。任務 - 這樣一方面,我將有方法來定義什麼時候調用任務(發送消息),另一方面是實際的任務? – user2216194

+0

沒關係 - 我得到它的工作。謝謝你的幫助! – user2216194

+0

@ user2216194 你能解釋你是如何工作的?我遇到了和你一樣的問題 – rrawat