web-dev-qa-db-ja.com

Python SSL接続 "EOFがプロトコル違反で発生しました"

私はDjango Celeryタスクを使用してGeventを使用してリクエストlibでFacebook Graph APIに接続します。私が常に実行している問題は、時々EOFプロトコル例外に違反して発生しました。さまざまなソースでさまざまな修正プログラムを提供しましたが、機能していないようです。

私はsslモジュール(gevent.monkey.patch_all())および他のいくつかにもモンキーパッチを適用しようとしましたが、運はありません。

Geventの最適化を適用する前に発生していなかったため、これがopensslの問題であるかどうかはわかりません。

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が正しいにもかかわらず時々ポップアップする別の問題は、「error(2、 'No such file or directory')」によって切断された後の再試行(5回の試行が残ります):/ [〜#〜] id [〜#〜]/events?limit = 5000&fields = description、name、location、start_time、end_time&access_token = (〜#〜] token [〜#〜]

23
user962563

J.F Sebastianが示唆した強制的な TLSv1修正 を使用すると、私が直面していたすべての問題が修正されました。

以下に関する将来の質問のヒント:

  • DNSError例外-Geventを0.13.Xから1.0rcにアップグレードすると、この問題が修正されます

  • SSLの問題-J.F Sebastianが提供するリンクの修正をご覧ください

14
user962563

最新のPython 2.7(2.7.11)をインストールしました。問題はなくなりました。問題は2.7.6で解決される可能性があると思います(Mac OSXでは2.7.5を使用していました) 。

1
some user

機械学習のツイートを取得するときに同じエラーが発生していました。次のpipインストールを行うことは私を助けました。これは動作します:

pip install ndg-httpsclient
pip install pyopenssl
pip install pyasn1

SSLError:EOFプロトコル違反(_ssl.c:590)エラーで発生しました)を削除しました。

それが役に立てば幸い。

0
Ashwin Dhakal