2012-04-09 11 views

答えて

2

私はFacebookのいくつかの開発者コミュニティグループで同様の質問をしました。具体的にはGoogleAppEngineに関するものではありませんでした。私は、RabbitMQとCeleryの間のユースケースを判断するために、一般的な意味でもっと尋ねました。ここでは、トピックに関連していると思われる回答があり、メッセージキューとタスクキューの違いを明確に説明しています。

私は尋ねた:

を、「セロリは内部queueManagement/queueAdministration活動 などを管理するために を持つことの複雑さを奪う QueueWrapper/QueueFrameworkである」と言うことは適切でしょうか?

「Celeryはタスクキューです」と 「RabbitMQはメッセージブローカーです」という本の言語を理解しています。しかし、 は初回セロリのユーザーとして少し混乱しているようですが、私たちは常にRabbitMQを に「キュー」として知られています。

RabbitMQの

A responseとconstrastにどうするか/どのようなセロリを説明するには助けてください、私はアブ・アシュラフMasnun

タスクキューとメッセージキューからもらいました。 RabbitMQは "MQ"です。メッセージ を受信し、メッセージを配信します。

セロリはタスクキューです。関連するデータでタスクを受け取り、 を実行して結果を配信します。

すぐにセロリを忘れましょう。 RabbitMQについて話しましょう。何を 私たちは通常しますか?私たちのDjango/Flaskアプリは キューにメッセージを送ります。特定のキューに新しい メッセージを待つワーカーが走っています。新しいメッセージが到着すると、それは を起動してタスクを処理します。

セロリは、このプロセス全体を美しく管理します。我々はもはや AMQPまたはRabbitMQの詳細について学ぶか心配する必要はありません。我々は、Redis またはメッセージブローカーとしてデータベース(例えば、MySQL)を使用することができます。セロリー では、ワーカーコードで「タスク」を定義できます。我々は バックグラウンドで何か(あるいはフォアグラウンド)を行う必要があるとき、私たちは(即時実行のために)このタスク を呼び出すまたは遅延 処理のために、このタスクをスケジュールすることができます。セロリは、メッセージを処理して、 タスクを実行して実行します。あなたの 定義タスクを実行して結果を保存する方法を知っている作業者を起動します。したがって、後で、タスク の結果を照会したり、必要に応じてタスクの進捗状況を照会することができます。 (私は実際にそれのようではない を行うが)

あなたもcronジョブのための代替としてセロリを使用することができます!

Another response私は、私の理解では、セロリ、イベントのプロデューサ/コンシューマを実装する 抽象化だけで非常に高いレベルであるということであるフアン・フランシスコ・カルデロンズンバ

からです。それはあなたが RabbitMQので例のために働くために行う必要があるいくつかの痛みを伴うものを を取り出します。セロリ自体はキューではありません。イベントキューは、お好みのシステムに を格納している、セロリは、あなたが最初からプロデューサ/コンシューマを記述することなく、そのような イベントで作業するのに役立ちます。

結局、ここで私は私の最終的な学習と家庭取ったものです:

セロリは来る根本AMQPメカニズム/アーキテクチャを管理する必要が の複雑さを取り去るキューラッパー/フレームワークであります RabbitMQを直接操作しています

3

GAEのタスクキューは、アプリケーションがバックグラウンド処理を行うための手段であり、メッセージキューと同じ目的を果たしません。彼らは異なる機能を果たす非常に異なるものです。

メッセージキューは、プロセス、スレッド、システム間で情報を共有するためのメカニズムです。

AppEngineタスクキューは、AppEngineアプリケーション自体に対して、私はこれを行う必要がありますが、後でクライアント要求のコンテキスト外で行うつもりです。

+3

メッセージキューとApp Engineのプルキューとの機能には違いはありません。 –

関連する問題