23

I'm using Django Celery task to connect to Facebook Graph API with requests lib using Gevent. Issue I'm constantly running at is that every now and then I get EOF occurred in violation of protocol exception. I've searched around and various sources offer different fixes but none seems to work.

I've tried monkey patching the ssl module(gevent.monkey.patch_all()) and some others too but no luck.

I'm not even sure if this is openssl issue as some sources might suggest as I haven't encountered it before applying Gevent optimisation

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

I'm using latest 1.0rc Gevent version.

Another issue that keeps poping up time to time although URL is correct is: Retrying (5 attempts remain) after connection broken by 'error(2, 'No such file or directory')': /ID/events?limit=5000&fields=description,name,location,start_time,end_time&access_token=TOKEN

4

3 回答 3

13

使用 JF Sebastian 建议的强制TLSv1 修复解决了我面临的所有问题。

未来问题的提示:

  • DNSError 异常 - 将 Gevent 从 0.13.X 升级到 1.0rc 修复了这个问题

  • SSL 问题 - 查看 JF Sebastian 提供的链接中的修复

于 2013-05-26T11:11:54.260 回答
1

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

于 2015-12-08T21:34:32.577 回答
0

在为我的机器学习获取推文时,我遇到了同样的错误。进行以下的 pip install 对我有帮助。这有效:

pip install ndg-httpsclient
pip install pyopenssl
pip install pyasn1

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

希望能帮助到你。

于 2018-02-10T09:44:48.793 回答