gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 06:08:29 29 4
gpt4 key购买 nike

使用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 无法访问时,我正确处理了这种情况,但不确定它何时接受我的连接但无法响应。

最佳答案

标准库实现似乎不支持套接字读取操作的超时。为此,您必须将 HTTPSConnection (技术上是 HTTPResponse._safe_read 方法)设置为非阻塞。

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

Does python's httplib.HTTPConnection block?

我会使用gevent对于整个应用程序(如果您的情况可能的话),它支持完全非阻塞 I/O,并且您可以实现您想要的任何超时方案,甚至可以同时实现多个连接。

关于Python httplib.HTTPSConnection 超时——连接与响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6951956/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com