Sto utilizzando l'attività di Django Celery per connettersi all'API di Facebook Graph con richieste lib utilizzando Gevent. Il problema su cui sono costantemente in esecuzione è che di tanto in tanto si verifica EOF in violazione dell'eccezione del protocollo. Ho cercato in giro e varie fonti offrono correzioni diverse ma nessuna sembra funzionare.Connessione SSL Python "EOF si è verificato in violazione del protocollo"
Ho provato a eseguire il patch di scimmia sul modulo ssl (gevent.monkey.patch_all()) e anche su alcuni altri, ma senza fortuna.
Io non sono nemmeno sicuro se questo è problema OpenSSL come alcune fonti potrebbero suggerire come non ho incontrato prima di applicare Gevent ottimizzazione
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
Sto usando l'ultima versione 1.0rc Gevent.
Un altro problema che mantiene poping up di tanto in tanto, anche se URL è corretto è: Nuovo tentativo (5 tentativi rimangono) dopo il collegamento rotto da 'errore (2, 'Nessun file o directory')':/ID/eventi? limite = 5000 & campi = descrizione, il nome, la posizione, start_time, end_time & access_token = GETTONE
hai provato [forzando TLSv1 come suggerito qui] (http://stackoverflow.com/questions/14102416/python-requests-requests-exceptions-sslerror-errno-8-ssl-c504-eof-occurred)? – jfs
Proverò anche questa correzione. La mia unica preoccupazione è che quando eseguo l'attività con Gevent Pool size = 1 non ottengo alcun errore, ma quando provo a eseguire più (da 2 a 10) errori diventano più comuni (rete non raggiungibile, errore EOF ssl, no tale file o directory). Quindi per me sembra il suo problema gevent? – user962563
Non conosco lo stato corrente della compatibilità 'gevent' /' requests'. Hai provato a 'grequests'? – jfs