我正在尝试使用requests.py库调用其他Web服务。我在windows下为我的用法编写了一个快速原型,并且一切正常,但是当我试图在linux下运行相同的原型时,出现“requests.exceptions.Timeout:Request timed out”错误。有谁知道为什么会发生这种情况?如果我尝试使用该库访问非https网址,它在Windows和Linux下都可以正常工作。Python请求库在Linux下超时
import requests
url = 'https://path.to.rest/svc/?options'
r = requests.get(url, auth=('uid','passwd'), verify=False)
print(r.content)
我也注意到,如果我离开关从get调用验证=假参数,我得到一个不同的异常,即“requests.exceptions.SSLError:无法连接到HTTPS URL,因为SSL模块不可用“。这似乎是一个可能的潜在原因,但我不知道他们为什么会更改错误代码,但我无法找到任何对ssl模块的引用,并且我已验证certifi已安装。有趣的是,如果我在Windows中关闭验证参数,我会得到不同的异常,“requests.exceptions.SSLError:[Errno 1] _ssl.c:503:error:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败”
编辑:
回溯用于提及
完整代码所有情况下/场景如上所示:如图所示
Traceback(most recent call last):
File "testRequests.py", line 15, in
r = requests.get(url, auth=('uid','passwd'), verify=False)
File "build/bdist.linux-x86_64/egg/requests/api.py", line 52, in get
File "build/bdist.linux-x86_64/egg/requests/api.py", line 40, in request
File "build/bdist.linux-x86_64/egg/requests/sessions.py", line 208, in request
File "build/bdist.linux-x86_64/egg/requests/models.py", line 586, in send
requests.exceptions.Timeout: Request timed out
以上代码减去 “验证=假” 放慢参数:
Traceback(most recent call last):
File "testRequests.py", line 15, in
r = requests.get(url, auth=('uid','passwd'))
File "build/bdist.linux-x86_64/egg/requests/api.py", line 52, in get
File "build/bdist.linux-x86_64/egg/requests/api.py", line 40, in request
File "build/bdist.linux-x86_64/egg/requests/sessions.py", line 208, in request
File "build/bdist.linux-x86_64/egg/requests/models.py", line 584, in send
requests.exceptions.SSLError: Can't connect to HTTPS URL because the SSL module is not available
代码如上图减去“验证=假”参数和Windows下运行:
Traceback(most recent call last):
File "testRequests.py", line 59, in
r = requests.get(url, auth=('uid','passwd'))
File "c:\Python27\lib\site-packages\requests\api.py", line 52, in get
return request('get', url, **kwargs)
File "c:\Python27\lib\site-packages\requests\api.py", line 40, in request
return s.request(method=method, url=url, **kwargs)
File "c:\Python27\lib\site-packages\requests\sessions.py", line 208, in request
r.send(prefetch=prefetch)
File "c:\Python27\lib\site-packages\requests\models.py", line 584, in send
raise SSLError(e)
requests.exceptions.SSLError: [Errno 1] _ssl.c:503: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
2012-04-17
ntlarson
+0
回溯会很有用。 –
2012-04-17 19:41:55
+0
当你运行'import ssl;从ssl导入套接字'在同一个Python环境中,你得到'requests.exceptions.Timeout:Request timed out'错误? –
2012-04-17 19:45:52
+0
我已经添加了回溯,我的道歉让他们离开。我也尝试了你提到的导入命令并得到一个名为_ssl的ImportError:No模块,但是如果我在Windows环境下运行它,它会导入正常,这看起来是我的问题。对于ssl来说,pypi上的唯一模块就是将python的旧版本的功能赋予2.7版本的应用程序。任何想法为什么它不会导入?我是否需要在服务器上安装ssl(我没有检查过它是否已安装)? –
2012-04-17 20:10:09