Python Django RabbitMQ消费者
我正在构建一个Django应用程序,它将被多个外部应用程序联系。Django应用程序应该提供UI,并使用从外部应用程序接收的数据填充数据库 第一个想法是使用django_rest_框架,但这似乎创建了一个紧密耦合的系统,因为每个外部应用程序都必须通过rest调用与django应用程序联系 我的另一个想法最好用图片来描述:几个发布者将在RabbitMQ上创建消息,我的Django将使用这些消息并在DB中创建适当的模型 这样的事情可能吗?我使用了出版商和消费者的Python Django RabbitMQ消费者,python,django,rabbitmq,Python,Django,Rabbitmq,我正在构建一个Django应用程序,它将被多个外部应用程序联系。Django应用程序应该提供UI,并使用从外部应用程序接收的数据填充数据库 第一个想法是使用django_rest_框架,但这似乎创建了一个紧密耦合的系统,因为每个外部应用程序都必须通过rest调用与django应用程序联系 我的另一个想法最好用图片来描述:几个发布者将在RabbitMQ上创建消息,我的Django将使用这些消息并在DB中创建适当的模型 这样的事情可能吗?我使用了出版商和消费者的pika库中的异步示例,消息按预期流动
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()
看看芹菜:它是一个帮助创建基于RabbitMQ的工人的框架
在Django应用所在的主机上运行芹菜工作者服务。如果您需要更改Django DB的状态,只需导入Django模型,并由worker将数据放入数据库。否则,您可以在Django应用程序中运行芹菜工人。我有类似的问题,在导入模型之前调用这两行代码就解决了
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "admin.settings")
django.setup()
然后
from .models import Foo
我仍在学习django,如果我找到详细的解释,我将编辑我的答案您的问题似乎与RabbitMQ无关。我不知道Django,但你应该提供更多关于Django应用程序的详细信息,以便有知识的人能够回答。如果没有错的话。TS希望Django使用来自rabbitmq和芹菜的数据的行为有所不同。芹菜工人将成为消费者,我们的Django应用程序将成为生产者。