Python SSL连接“违反协议发生EOF”

2024-04-26 12:44:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Django芹菜任务连接到Facebook图形API,使用Gevent连接请求库。我经常遇到的问题是,时不时会出现违反协议异常的EOF。我到处搜索,各种来源提供不同的修复,但似乎没有工作。

我试过monkey修补ssl模块(gevent.monkey.patch_all())和其他一些模块,但没有成功。

我甚至不确定这是否是openssl问题,因为在应用Gevent优化之前,我没有遇到过这个问题

Connection error: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol
Traceback (most recent call last):
File "/home/user/workspace/startup/project/events/tasks.py", line 52, in _process_page
data = requests.get(current_url)
File "/home/user/workspace/startup/env/local/lib/python2.7/site-packages/requests/api.py", line 55, in get
return request('get', url, **kwargs)
File "/home/user/workspace/startup/env/local/lib/python2.7/site-packages/requests/api.py", line 44, in request
return session.request(method=method, url=url, **kwargs)
File "/home/user/workspace/startup/env/local/lib/python2.7/site-packages/requests/sessions.py", line 354, in request
resp = self.send(prep, **send_kwargs)
File "/home/user/workspace/startup/env/local/lib/python2.7/site-packages/requests/sessions.py", line 460, in send
r = adapter.send(request, **kwargs)
File "/home/user/workspace/startup/env/local/lib/python2.7/site-packages/requests/adapters.py", line 250, in send
raise SSLError(e)
SSLError: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol

我正在使用最新的1.0rc Gevent版本。

尽管URL是正确的,但另一个经常弹出的问题是: 在连接被“error(2,No such file or directory')”中断后重试(仍有5次尝试):/ID/events?limit=5000&fields=描述、名称、位置、开始时间、结束时间和访问令牌


Tags: inpyenvhomerequestlibpackageslocal
3条回答

我在为我的机器学习获取tweets时也犯了同样的错误。做以下的pip安装帮助了我。这是有效的:

pip install ndg-httpsclient
pip install pyopenssl
pip install pyasn1

它删除了我的ssl error:EOF发生违反协议(_ssl.c:590)的错误。

希望有帮助。

使用J.F Sebastian建议的强制TLSv1 fix修复了我所面临的所有问题。

关于以下问题的提示:

  • DNSError异常-将Gevent从0.13.X升级到1.0rc可解决此问题

  • SSL问题-查看J.F Sebastian提供的链接中的修复程序

我安装了最新的Python2.7(2.7.11),问题就解决了。我相信这个问题甚至可以在2.7.6中解决(我在Mac OSX上使用的是2.7.5)。

相关问题 更多 >