我正在构建一个Django应用程序,多个外部应用程序将与其联系。 Django应用程序旨在提供UI并使用从外部应用程序接收的数据填充数据库。
最初的想法是使用 django_rest_framework
,但这似乎会创建一个紧密耦合的系统,因为每个外部应用程序都必须通过REST调用联系Django应用程序。
我的另一个想法最好用一张图片来描述: http://imgur.com/vakZvQs 几个发布者将在RabbitMQ上创建消息,我的Django将消费它们并在数据库中创建适当的模型。
这样的做法可行吗?我已经使用了来自 pika
库的异步示例进行了发布者和消费者,并且消息如预期地流动。但是将Django加入其中会产生错误,例如:
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()