2016-03-19 11 views
0

私はDjangoアプリケーションをビルドしており、複数の外部アプリケーションから連絡を受けます。 DjangoアプリケーションはUIを提供し、外部アプリケーションから受け取ったデータをデータベースに取り込むことになっています。Django RabbitMQ consumer

最初のアイデアはdjango_rest_frameworkでしたが、外部のすべてのアプリケーションがREST呼び出しでDjangoアプリに連絡しなければならないため、これは緊密に結合されたシステムを作成するように思えました。

私の他のアイデアは画像で最もよく説明されています:http://imgur.com/vakZvQsいくつかの出版社はRabbitMQでメッセージを作成し、私のDjangoはそれらを消費し、DBに適切なモデルを作成します。

これは可能でしょうか?私はpikaの出版社と消費者のためのライブラリから非同期の例を使用しており、メッセージは期待どおりに流れています。

RuntimeError: Model class django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label 

django.core.exceptions.ImproperlyConfigured: Requested setting LOGGING_CONFIG, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. 

コードの抜粋:セロリの

# pika consumer 
def on_message(self, unused_channel, basic_deliver, properties, body): 
     # invoking view function 
     from myapp.views import create_one_foo 
     create_one_foo() 
     self.acknowledge_message(basic_deliver.delivery_tag) 

# views.py 
from .models import Foo 

def create_one_foo(): 
    foo = Foo() 
    foo.bar = "bar" 
    foo.save() 
+0

あなたの問題はRabbitMQに関連していないようです。私はDjangoを知らないが、知識のある人が答えることができるように、あなたのDjangoアプリケーションの詳細を与えるべきである。 –

答えて

0

ルック:ミックスでDjangoのを投げるのようなエラーが生成さhttp://www.celeryproject.orgそれは作成を支援するフレームワークだのRabbitMQをベース労働者

実行セロリワーカーあなたのDjangoアプリケーションがあるホスト上のサービス。 Django DBの状態を変更する必要がある場合は、Djangoモデルをインポートし、作業者がデータベースにデータを入れてください。それ以外の場合は、Djangoアプリ内でセロリの作業者を実行することができます。

関連する問題