Conexión SSL de Python "EOF ocurrió en violación del protocolo"
django celery (3)
Estaba teniendo el mismo error durante la búsqueda de tweets para mi aprendizaje automático. Hacer la instalación de pip de lo siguiente me ayudó. Esto funciona:
pip install ndg-httpsclient
pip install pyopenssl
pip install pyasn1
Se eliminó mi SSLError: EOF se produjo en violación del error de protocolo (_ssl.c: 590).
Espero eso ayude.
Estoy usando la tarea Django Celery para conectarme a la API de Graph de Facebook con las solicitudes lib utilizando Gevent. El problema al que me estoy ejecutando constantemente es que de vez en cuando me sale EOF en violación de la excepción del protocolo. He buscado alrededor y varias fuentes ofrecen soluciones diferentes, pero ninguna parece funcionar.
He intentado parchar el módulo ssl (gevent.monkey.patch_all ()) y algunos otros también, pero no tuve suerte.
Ni siquiera estoy seguro de si se trata de un problema de openssl, ya que algunas fuentes pueden sugerirlo, ya que no lo he encontrado antes de aplicar la optimización de 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
Estoy usando la última versión 1.0rc de Gevent.
Otro problema que sigue apareciendo de vez en cuando aunque la URL es correcta es: Reintentar (quedan 5 intentos) después de la conexión interrumpida por ''error (2,'' No hay tal archivo o directorio '')'': / ID / events? Limit = 5000 & fields = description , nombre, ubicación, start_time, end_time & access_token = TOKEN
Instalé la última versión de Python 2.7 (2.7.11) y el problema desapareció. Creo que el problema podría resolverse en 2.7.6 (estaba usando 2.7.5 en Mac OSX).
Usando el arreglo forzado de TLSv1 como lo sugirió JF, Sebastian arregló todos los problemas que enfrentaba.
Consejos para futuras preguntas sobre:
Excepción DNSError: la actualización de Gevent de 0.13.X a 1.0rc soluciona este problema
Problemas de SSL - mira la corrección en el enlace proporcionado por JF Sebastian