Python请求模块连接超时

时间:2014-07-16 15:25:13

标签: python python-requests

我正在查看http://docs.python-requests.org/en/latest/,“连接超时”被列为一项功能。但是,当我进一步阅读时,它说明了

  

超时不是整个响应下载的时间限制;相反,如果服务器没有发出超时秒响应(更确切地说,如果在超时秒内没有在底层套接字上收到任何字节),则会引发异常。

这听起来不像连接超时的描述。我所看到的是连接成功,它上传了一个大文件,然后等待响应。但是,响应需要一段时间,然后超时。

如何设置连接超时,但是一旦连接成功,仍然等待响应缓慢?非常感谢。

2 个答案:

答案 0 :(得分:4)

超时用于套接字连接阶段和响应读取阶段。唯一的例外是流式传输请求;如果设置stream=True,则超时不能应用于读取部分。确实使用 来等待套接字连接或接收数据。

如果您需要整体超时,请使用其他技术,例如使用中断或eventlet:Timeout for python requests.get entire response

答案 1 :(得分:0)

(针对人类的)请求库具有连接超时,请参见 -https://requests.kennethreitz.org/en/master/user/advanced/#timeouts

r = requests.get('https://github.com', timeout=(3.05, 27))

# e.g. explicitly
conn_timeout = 6
read_timeout = 60
timeouts = (conn_timeout, read_timeout)
r = requests.get('https://github.com', timeout=timeouts)

对于元组中的哪个值,文档并不确定,但是可以安全地假设是(connect, read)超时。