更新:https://requests.readthedocs.io/en/master/user/advanced/#timeouts
在新版本中requests
:
如果为超时指定单个值,则如下所示:
r = requests.get('https://github.com', timeout=5)
超时值将同时应用于connect
和read
超时。如果要单独设置值,请指定一个元组:
r = requests.get('https://github.com', timeout=(3.05, 27))
如果远程服务器非常慢,则可以通过将None传递为超时值,然后获取一杯咖啡,从而使Requests永远等待响应。
r = requests.get('https://github.com', timeout=None)
我的旧的(可能是过时的)答案(很久以前发布了):
还有其他方法可以解决此问题:
1.使用TimeoutSauce
内部类
来自:https : //github.com/kennethreitz/requests/issues/1928#issuecomment-35811896
import requests from requests.adapters import TimeoutSauce
class MyTimeout(TimeoutSauce):
def __init__(self, *args, **kwargs):
connect = kwargs.get('connect', 5)
read = kwargs.get('read', connect)
super(MyTimeout, self).__init__(connect=connect, read=read)
requests.adapters.TimeoutSauce = MyTimeout
此代码应使我们将读取超时设置为等于连接超时,这是您在Session.get()调用中传递的超时值。(请注意,我实际上尚未测试此代码,因此可能需要进行一些快速调试,我只是将其直接写到GitHub窗口中。)
2.使用来自kevinburke的请求分支: https : //github.com/kevinburke/requests/tree/connect-timeout
从其文档中:https : //github.com/kevinburke/requests/blob/connect-timeout/docs/user/advanced.rst
如果为超时指定单个值,则如下所示:
r = requests.get('https://github.com', timeout=5)
超时值将同时应用于连接和读取超时。如果要单独设置值,请指定一个元组:
r = requests.get('https://github.com', timeout=(3.05, 27))
kevinburke已请求将其合并到主要请求项目中,但尚未被接受。