如何在上下文管理器之外打开 websocket 连接?
How can I open a websocket connection outside of a context manager?
这个是在 的回答中提出的,但我想专门问一个新的。
如何在不使用上下文管理器的情况下连接到 websocket ?当实际调用需要使用它的协程时,我遇到了 websocket 关闭的问题。
ws = websockets.connect('ws://192.168.1.32:8765')
print(ws)
给出 <websockets.py35.client.Connect object at 0x0076CAD0>
而不是我使用上下文管理器获得的 <websockets.client.WebSocketClientProtocol object at 0x04A91A70>
。 Connect
对象没有 send
和 recv
方法。
使用:
ws = await websockets.connect('ws://192.168.1.32:8765')
您可以查看 Client
的源代码,了解它如何与异步上下文管理器一起工作:
async def __aenter__(self):
self.websocket = await self
return self.websocket
关闭连接使用:
await ws.close()
请记住上下文管理器通常可以帮助您:您可能希望更改代码以使用它们而不是绕过它们。
这个是在
如何在不使用上下文管理器的情况下连接到 websocket ?当实际调用需要使用它的协程时,我遇到了 websocket 关闭的问题。
ws = websockets.connect('ws://192.168.1.32:8765')
print(ws)
给出 <websockets.py35.client.Connect object at 0x0076CAD0>
而不是我使用上下文管理器获得的 <websockets.client.WebSocketClientProtocol object at 0x04A91A70>
。 Connect
对象没有 send
和 recv
方法。
使用:
ws = await websockets.connect('ws://192.168.1.32:8765')
您可以查看 Client
的源代码,了解它如何与异步上下文管理器一起工作:
async def __aenter__(self):
self.websocket = await self
return self.websocket
关闭连接使用:
await ws.close()
请记住上下文管理器通常可以帮助您:您可能希望更改代码以使用它们而不是绕过它们。