Heroku关于发送流式响应的文档中提到:(传送门):“如果要发送流式响应,例如使用服务器推送事件(server-sent events),必须检测客户端何时挂起,并确保您的应用服务器立即关闭连接。”
我一直在Heroku上使用Django中的服务器推送事件(SSE),并使用django-sse。它使用一个迭代器无限循环地从Redis发布/订阅频道读取消息并将其发送到客户端。
我一直在Heroku上使用Django中的服务器推送事件(SSE),并使用django-sse。它使用一个迭代器无限循环地从Redis发布/订阅频道读取消息并将其发送到客户端。
def iterator(self):
connection = _connect()
pubsub = connection.pubsub()
pubsub.subscribe(self.get_redis_channel())
for message in pubsub.listen():
if message['type'] == 'message':
event, data = json.loads(message['data'])
self.sse.add_message(event, data)
yield
问题在于,如果客户端断开连接,我希望能够跳出循环,这样我就可以关闭与Redis的连接。如何检测客户端何时断开连接?
redis-cli
中的CLIENT LIST
命令来检查Django Redis客户端是否仍然连接。 - igorwredis-cli
和CLIENT LIST
确认了连接确实没有自动关闭。 - Tom Offermann