Я создаю приложение Django, с которым будут связаны несколько внешних приложений. Предполагается, что приложение Django предоставляет интерфейс и заполняет базу данных данными, полученными от внешних приложений.Django RabbitMQ потребитель
Первой идеей было использование django_rest_framework
, но это казалось созданием тесно связанной системы, потому что каждое внешнее приложение должно будет связаться с приложением Django через вызов REST.
Моя другая идея лучше всего описана с изображением: http://imgur.com/vakZvQs Несколько издателей создадут сообщения на RabbitMQ, и мой Django будет потреблять их и создавать соответствующие модели в БД.
Возможно ли это как можно? Я использовал асинхронные примеры из библиотеки 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()
Ваша проблема, похоже, не связана с RabbitMQ. Я не знаю Django, но вы должны дать более подробную информацию о своем приложении Django, чтобы квалифицированные люди могли ответить. –