我不明白 Django Channels 2.4.0 的行为。当多个 Web 套接字打开时,接收器函数的调用频率与 Web 套接字打开的频率一样。
这里是频道文档的著名聊天示例中的最小代码
# Receive message from WebSocket
async def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json['message']
# Send message to room group
await self.channel_layer.group_send(
self.room_group_name,
{
'type': 'chat_message',
'message': message
}
)
# Receive message from room group
async def chat_message(self, event):
print(event) # this is called as often as sockets are open
message = event['message']
# Send message to WebSocket
await self.send(text_data=json.dumps({
'message': message
}))
当我想在接收器函数触发的数据库中执行逻辑操作时,问题变得很严重。然后根据打开的 Web 套接字的数量开始多次执行操作。知道我在这里缺少什么吗?