ivi*_*ica 7 python django rabbitmq
我正在构建一个 Django 应用程序,多个外部应用程序将与该应用程序联系。Django 应用程序应该提供 UI 并使用从外部应用程序接收的数据填充数据库。
第一个想法是使用django_rest_framework,但这似乎创建一个紧密耦合的系统,因为每个外部应用程序都必须通过 REST 调用联系 Django 应用程序。
我的另一个想法最好用图片来描述:https://i.stack.imgur.com/dGgSg.jpg几个发布者会在 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.
Run Code Online (Sandbox Code Playgroud)
代码摘录:
# 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()
Run Code Online (Sandbox Code Playgroud)
dim*_*imm -1
看看 celery: http: //www.celeryproject.org这是一个帮助创建基于 RabbitMQ 的工作程序的框架
在 Django 应用所在的主机上运行 celery Worker 服务。如果您需要更改 Django DB 的状态,只需导入 Django 模型并由工作人员将数据放入数据库即可。否则,您可以在 Django 应用程序中运行 celery 工作程序。
| 归档时间: |
|
| 查看次数: |
5660 次 |
| 最近记录: |