我想实现的是很简单,因为你可以在标题中阅读,但我不能让它工作“两个发送之间的睡眠”.我的代码:
await self.channel_layer.group_send(
str(self.game_link),
{
"type": "group_message",
"text": json.dumps(answer_data),
}
)
await asyncio.sleep(5)
await self.channel_layer.group_send(
str(self.game_link),
{
"type": "group_message",
"text": json.dumps(data),
}
)
这里所发生的是在睡眠完成之后两者同时发送。
1条答案
按热度按时间sdnqo3pr1#
经过一些搜索和读取this SO post,我设法让它工作。
将
await asyncio.sleep(5)
放入group_message
方法中在等待
group_send
时,进程不是立即发送消息,而是发送到队列(针对组中的所有成员)。由于这个进程还没有完成,所以这个通道在某种程度上被阻塞了,不能使用将来的消息,这个进程必须休眠5秒,等待另一个
group_send
,然后最后在它自己的队列中使用这两个消息。如果您从其他位置加入通话组(例如,打开另一个浏览器),您将在5秒延迟后收到第二条信息。
另一方面,将
await asyncio.sleep(5)
放在group_message
中,只会在使用消息时休眠。注:添加过滤逻辑,以便不是所有消息都休眠
在您的邮件发件人中: