2013-10-28 10 views
7

私が書いた電子メールサービスを私のフラスコのアプリケーションから完全に切り離したい。私はrabbitmqでセロリを使用しています。だから、あるプロジェクトでキュー(プロデューサ)にメッセージを送信するFlaskアプリケーションがあるように、セロリを設定できる方法があるのだろうかと思います。そして別のプロジェクトでは、メッセージを聞いてタスク(消費者)を実行するセロリインスタンスを実行しています。コミュニケーションがどのようにうまくいくのか、私はまだ混乱していますか?私はフラスコのアプリケーションまたはセロリプロジェクトにAPI(電子メールを送信する)を入れますか?最終的に私はFlaskアプリケーションとCeleryインスタンスを異なるEC2インスタンスに入れたいと思っています - メッセージブローカーとして機能するrabbitmqを使用しています。セロリの消費者と生産者を分ける

ありがとうございました!

答えて

5

Celeryのsend_task関数を使用すると、タスク名を使用してRabbitMQを介してRabbitMQを介して作業者にタスクを送信できます。タスクがあなたの代わりに名前でタスクを呼び出すために send_taskを()を使用することができ、現在のプロセスに登録されていない場合は

:あなたはまだあなたがセロリのアプリを持っているモジュールをインポートする必要があります。

例:

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

私のモジュールをインポートせずにそれを行うことが可能であるならば(私は別のサーバインスタンスにそれを置くことを計画していたように)私は思っていました。セロリはパイプ(rabbitmq)の両側にある必要があるので、私の質問は - セロリからサブクラス化することができます.Task - タスクが呼び出されたときに何が起こるかを定義するメソッドがあります)、もう一方は実際の仕事をしていますか? – user2216194

+0

気にしないでください - 私はそれを働かせました。ご協力いただきありがとうございます! – user2216194

+0

@ user2216194 あなたはそれがどのように機能したのか説明できますか?私はあなたと同じ問題で立ち往生しています – rrawat

関連する問題