web-dev-qa-db-fra.com

Connexion SSL Python "EOF survenu en violation du protocole"

J'utilise la tâche Django Celery pour me connecter à l'API Graph Facebook avec des requêtes lib à l'aide de Gevent. Le problème auquel je suis constamment confronté est que de temps en temps je reçois EOF en violation d'une exception de protocole. J'ai effectué des recherches et différentes sources proposent différentes solutions, mais aucune ne semble fonctionner.

J'ai essayé de patcher le module ssl avec un singe (gevent.monkey.patch_all ()) et quelques autres aussi mais pas de chance.

Je ne suis même pas sûr qu'il s'agisse d'un problème openssl, comme le suggèrent certaines sources, car je ne l'avais pas rencontré avant l'application de l'optimisation 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

J'utilise la dernière version 1.0rc de Gevent.

Un autre problème persiste régulièrement malgré l'URL correcte: Nouvelle tentative (il reste 5 tentatives) après la rupture de la connexion par 'erreur (2,' Aucun fichier ou répertoire de ce type ')': /ID/ événements ? limit = 5000 & fields = description, nom, emplacement, heure de début, heure de fin et access_token =JETON

22
user962563

En utilisant le correctif TLSv1 forcé comme suggéré par J.F, Sebastian a corrigé tous les problèmes auxquels je faisais face.

Conseils pour les questions futures concernant:

  • Exception DNSError - la mise à niveau de Gevent de 0.13.X à 1.0rc corrige ce problème

  • Problèmes SSL - regardez le correctif dans le lien fourni par J.F Sebastian

14
user962563

J'ai installé le dernier Python 2.7 (2.7.11) et le problème a disparu. Je pense que le problème pourrait même être résolu dans la version 2.7.6 (j'utilisais la version 2.7.5 sur Mac OSX).

1
some user

J'avais la même erreur lors de la récupération de tweets pour mon apprentissage automatique. Faire le pip installer de ce qui suit m'a aidé. Cela marche: 

pip install ndg-httpsclient
pip install pyopenssl
pip install pyasn1

Il a supprimé mon erreur SSLError: EOF s'est produite en violation d'une erreur de protocole (_ssl.c: 590).

J'espère que ça aide.

0
Ashwin Dhakal