Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django RabbitMQ消费者_Python_Django_Rabbitmq - Fatal编程技术网

Python Django RabbitMQ消费者

Python Django RabbitMQ消费者,python,django,rabbitmq,Python,Django,Rabbitmq,我正在构建一个Django应用程序,它将被多个外部应用程序联系。Django应用程序应该提供UI,并使用从外部应用程序接收的数据填充数据库 第一个想法是使用django_rest_框架,但这似乎创建了一个紧密耦合的系统,因为每个外部应用程序都必须通过rest调用与django应用程序联系 我的另一个想法最好用图片来描述:几个发布者将在RabbitMQ上创建消息,我的Django将使用这些消息并在DB中创建适当的模型 这样的事情可能吗?我使用了出版商和消费者的pika库中的异步示例,消息按预期流动

我正在构建一个Django应用程序,它将被多个外部应用程序联系。Django应用程序应该提供UI,并使用从外部应用程序接收的数据填充数据库

第一个想法是使用django_rest_框架,但这似乎创建了一个紧密耦合的系统,因为每个外部应用程序都必须通过rest调用与django应用程序联系

我的另一个想法最好用图片来描述:几个发布者将在RabbitMQ上创建消息,我的Django将使用这些消息并在DB中创建适当的模型

这样的事情可能吗?我使用了出版商和消费者的
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应用程序将成为生产者。