首页 文章

Python httplib.HTTPSConnection超时 - 连接与响应

提问于
浏览
1

使用 httplib 创建 HTTPSConnection 时,很容易设置超时:

connection = httplib.HTTPSConnection('some.server.com', timeout=10)
connection.request('POST', '/api', xml, headers={'Content-Type': 'text/xml'})
response = connection.getresponse().read()

该操作有各种部分,例如,接受连接并收到响应 .

超时是否适用于整个操作?如果远程主机接受连接但是从不发回响应,它是否仍会超时?我想确保设置超时确保操作最多阻止10秒 .

一些背景:

我正在连接外部API并希望操作阻止 . 只是不超过10秒,如果阻塞超过10秒,停止阻塞并引发异常 . 我正确处理外部API无法访问时的情况,但不确定何时接受我的连接但无法响应 .

1 回答

  • 2

    似乎标准库实现不支持套接字读取操作的超时 . 你必须使 HTTPSConnection (技术上是 HTTPResponse._safe_read 方法)非阻塞 .

    这里有一个类似的问题,也可能有所帮助:

    Does python's httplib.HTTPConnection block?

    我会在整个应用程序中使用gevent,如果在您的情况下可以支持完全非阻塞I / O,并且您可以实现所需的任何超时方案,即使是一次多个连接也是如此 .

相关问题