Ich baue eine Django-Anwendung, die von mehreren externen Anwendungen kontaktiert wird. Die Django-Anwendung soll UI bereitstellen und die Datenbank mit den von externen Anwendungen empfangenen Daten füllen.Django RabbitMQ Verbraucher
Die erste Idee war, django_rest_framework
zu verwenden, aber das schien wie ein eng gekoppeltes System zu erstellen, da jede externe App die Django-App über REST-Aufruf kontaktieren muss.
Meine andere Idee ist am besten mit einem Bild beschrieben: http://imgur.com/vakZvQs Mehrere Verleger würden Nachrichten auf einem RabbitMQ erstellen und mein Django würde diese verbrauchen und entsprechende Modelle in der Datenbank erstellen.
Ist so etwas möglich? Ich habe Async Beispiele aus pika
Bibliothek für Publisher und Consumer verwendet und die Nachrichten fließen wie erwartet. Werfen Django in der Mischung erzeugt Fehler wie:
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.
-Code Auszüge:
# 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()
Ihr Problem scheint in keiner Beziehung zu RabbitMQ zu stehen. Ich kenne Django nicht, aber Sie sollten mehr Details zu Ihrer Django-Anwendung angeben, damit sachkundige Personen antworten können. –