Python SSL connection "EOF occurred in violation of protocol"
Solution 1
Using the forced TLSv1 fix as suggested by J.F Sebastian fixed all the issues I was facing.
Hints for future questions regarding:
DNSError exception - upgrading Gevent from 0.13.X to 1.0rc fixes this issue
SSL issues - look at fix in link provided by J.F Sebastian
Solution 2
I installed the latest Python 2.7 (2.7.11) and the problem went away. I believe the problem might even be solved back in 2.7.6 (I was using 2.7.5 on Mac OSX).
Related videos on Youtube
user962563
Updated on July 09, 2022Comments
-
user962563 almost 2 years
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
-
jfs almost 11 yearshave you tried forcing TLSv1 as suggested here?
-
user962563 almost 11 yearsI will try this fix also. My only concern is that when running the task with Gevent Pool size=1 I don't get any errors at all, but when I try to run more (2 to 10) errors get more common (network unreachable, EOF ssl error, no such file or directory). So to me it seems its gevent issue?
-
jfs almost 11 yearsI don't know the current status of
gevent
/requests
compatibility. Have you triedgrequests
? -
user962563 almost 11 yearsThe TLSv1 force fix seems to do the trick, there is no more SSL errors. However...with this fix enabled I keep getting error OperationalError: unable to open database file (using sqllite3) after about 7k writes to database. Which is odd since this error is supposed to happen right from the start if celery didn't have access to db and not after 7k successful transactions...
-
pyCthon almost 9 yearsWeird I get this error using my phone's wifi/tethering and FTPS, but NOT while the same code and standard wifi.
-
-
Anthony Kong almost 7 yearsI just got hit by this problem with python 2.7.6 on ubuntu 3.13.0-48-generic
-
Chris over 4 yearsProbably 2.7.9: urllib3.readthedocs.io/en/latest/…