2012-04-20 4 views
1

どちらの場合でも実際の結果がどこに格納されているのか分かりません。
私は、テストアプリケーションでデータベースとしてdjango-celerysqliteを使用しています。私はRabbitMQをブローカーに使用しています。セロリの結果にamqpバックエンドとデータベースバックエンドを使用する違いは何ですか?

私はCELERY_RESULT_BACKEND = "amqp"を設定しようとしたともCELERY_RESULT_DBURI="mysqlitedb"

と「データベース」へしかし、私は、彼らが保存されると、いずれの場合も、結果と対話する方法を理解していません。

作業の終わりに作業者が戻ったときに何が起こるかを取り巻く基本的な概念を理解できないと思います。

+0

データベースのデータと直接対話する方法を尋ねていますか?私はデータベースが単にキューを格納し、分散ロックを作成するためにトランザクションをブロックするのに使用されていると思う。有用な永続データがあるとは思わないでしょう。それはちょうど私の最高推測です、私はセロリの内部の直接の知識がありません。 – mikerobi

答えて

2

タスクをセロリに送信すると、結果としてAsyncResultが返されます。どこかに保存してresultを使用して、タスク実行の実際の結果を確認して取得することができるid属性があります。

結果の格納は、AMQPまたはデータベーステーブルです。最初は速く、DBに負荷を加えないでください。しかし、追加のセットアップが必要です。

+0

yabut。誰がどのように結果を保持し、どのようにデータベースのバックエンドがamqpバックエンドと異なるかあなたが結果を見る前に長い時間待っていたら、どこかに保存しなければならないでしょう。 Task_id for Celery 2.5 - 安定版です。 – michael

+0

私はその質問が何であるか分かりません。結果のストレージはAMQPまたはデータベーステーブルです。最初は速く、DBに負荷を加えないでください。しかし、追加のセットアップが必要です。ほかに何か? – ilvar

+0

あなたのコメントを反映させるためにあなたは答えます。はい、私の質問は明確ではありませんでした。私は、結果が実際にジャンゴ・セロリに格納されているかどうか、ORM方法で結果とやりとりする方法についてはっきりしていませんでした。あるいは、彼らがDBに積み重ねるときに彼らと何をするか。 – michael

関連する問題