使用SSL时Asyncio StreamReader读取方法不考虑超时

时间:2019-07-24 08:58:14

标签: python-3.x ssl asyncio

我正在使用asyncio的流向SSL服务器发出请求。
这是一个示例方法。

async def make_request():
    async with asyncio.connect('127.0.0.1', 8888, ssl=ssl.SSLContext()) as stream:
        await stream.write(REQUEST)
        print(await stream.read(RESPONSE_LENGTH))

某些服务器完成了SS1握手,接收到请求但不发送任何响应。这会使方法按预期卡在stream.read调用上。

在这种情况下,我想为读取调用定义超时。我试图通过添加wait_for来实现这一点。

print(await asyncio.wait_for(stream.read(RESPONSE_LENGTH),timeout=2))

但是,此方法无效,并且会无限期地阻塞。
此外,如果我们使用普通的TCP连接,那么我建议的修复程序会很好地工作。

我的解决方案出了什么问题?是否有其他方法可以实现?

0 个答案:

没有答案