python - 将数据发送到 Django 通道
问题描述
我有一个每秒生成 JSON 数据的外部 Python 脚本;另一方面,我有一个 Django 应用程序。我想在我的 Django 应用程序的网页上流式传输这些数据。我已经用 Django 通道构建了一个消费者,但我不知道如何让 Django 拥有我从其他 Python 脚本生成的数据。
这是我的基本消费者:
class EchoConsumer(AsyncConsumer):
async def websocket_connect(self, event):
print("connected", event)
await self.send({
"type": "websocket.accept"
})
async def websocket_receive(self, event):
print("received", event)
# Echo the same received payload
async def websocket_disconnect(self, event):
print("disconnected", event)
有没有具体的方法可以做到这一点?还是我应该在中间使用其他服务?任何建议表示赞赏
解决方案
您可以做的是使用 @database_sync_to_async 装饰器将该数据倒入数据库模型。看看下面的例子
async def websocket_receive(self, event):
message = await self.create_message_db(event.get('data'))
@database_sync_to_async
def create_message_db(self, data):
return Message.objects.create(thread=self.thread, sender=self.scope['user'],
body=data['message'])
推荐阅读
- html - 如何根据某些屏幕尺寸传递某些道具
- polymer-3.x - 将函数传递给孩子
- android - 如何在没有太多代码更改的情况下使相对布局应用程序响应?
- javascript - 用户签到位置基于从哪里开始?
- python - 修改“max_depth”时,如何将 DecisionTreeRegressor 的结果保存到不同的数组?
- python - 错误的 Word() 字符串给出了误导性的错误位置
- r - 使用 dplyr 中的“包含”使用多列创建指标变量
- sql - 在插入或更新时返回数据时,我还需要使用 Exec 吗?
- c++ - 如何处理模棱两可的模板参数?
- ios - 两个同时滚动的视图行为怪异