请看这个例子。
如您所见,某种形式的event内容不断发送给客户端。我想模仿Django-Channels里面使用consumers.py。这是我所拥有的简化版本:
class ChatConsumer(AsyncConsumer):
async def ws_connect(self, event):
self.send = get_db_object()
....
await self.send({
"type": "websocket.accept"
})
# I need to CONSTANTLY receive & send data
async def ws_receive(self, event):
obj = ...# query DB and get the newest object
json_obj = {
'field_1': obj.field_1,
'field_2': obj.field_2,
}
await self.send({
"type": "websocket.send",
"text": json.dumps(json_obj)
})
@database_sync_to_async
def get_db_object(self, **kwargs):
return Some_Model.objects.get(**kwargs)[0]
Run Code Online (Sandbox Code Playgroud)
在这里,我希望我的Django后端能够不断运行:
查询数据库
从数据库接收obj
将收到的obj发送给前端Websocket event
我该如何实现?重要的是,我需要不变地将数据发送到客户端。
Django-Channels互联网上的大多数资源仅包含聊天应用程序,而不必经常将数据发送到客户端。我找不到能完成此工作的任何工作代码。
请不要再提出关于Redis或渠道文档的建议...或者缺少一些缺少良好文档的随机第3方库...。推荐起来很容易,但是很难实现。例如,我发现有人推荐 …