Подтвердить что ты не робот

Python SSL-соединение "EOF произошел с нарушением протокола"

Я использую задачу Django Celery для подключения к Facebook Graph API с запросами lib с использованием Gevent. Проблема, с которой я постоянно сталкиваюсь, заключается в том, что время от времени я получаю EOF в нарушении исключения протокола. Я искал вокруг, и различные источники предлагают разные исправления, но никто не работает.

Я пробовал обезьяну, исправляя модуль ssl (gevent.monkey.patch_all()) и некоторые другие тоже, но не повезло.

Я даже не уверен, что это проблема openssl, поскольку некоторые источники могут предложить, поскольку я не сталкивался с этим, прежде чем применять оптимизацию 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

Я использую последнюю версию 1.0rc Gevent.

Другая проблема, которая время от времени появляется, хотя правильный URL-адрес: Повторная попытка (осталось 5 попыток) после того, как соединение сломано по ошибке (2, "Нет такого файла или каталога" ) ':/ ID/events? Limit = 5000 & fields = description, name, location, start_time, END_TIME & access_token = ЗНАК

4b9b3361

Ответ 1

Используя принудительное исправление TLSv1, как предположил Дж. Ф. Себастьян, были исправлены все проблемы, с которыми я столкнулся.

Рекомендации для будущих вопросов относительно:

  • Исключение DNSError - обновление Gevent с 0.13.X до 1.0rc устраняет эту проблему

  • Проблемы с SSL - посмотрите исправление в ссылке, предоставленной J.F Sebastian

Ответ 2

Я установил последнюю версию Python 2.7 (2.7.11), и проблема исчезла. Я считаю, что проблема может быть решена еще в 2.7.6 (я использовал 2.7.5 на Mac OSX).