2013-05-25 27 views
21

Tôi đang sử dụng nhiệm vụ cần thiết Django Celery để kết nối với Facebook Graph API với yêu cầu lib bằng Gevent. Vấn đề tôi liên tục chạy ở đó là tất cả bây giờ và sau đó tôi nhận được EOF xảy ra vi phạm ngoại lệ giao thức. Tôi đã tìm kiếm xung quanh và các nguồn khác nhau cung cấp các bản sửa lỗi khác nhau nhưng dường như không có tác dụng.Kết nối SSL Python "EOF xảy ra vi phạm giao thức"

Tôi đã thử khỉ vá mô-đun ssl (gevent.monkey.patch_all()) và một số người khác nữa nhưng không may mắn.

Tôi thậm chí không chắc chắn nếu đây là vấn đề openssl như một số nguồn tin có thể gợi ý như tôi đã không gặp nó trước khi áp dụng Gevent tối ưu hóa

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 

Tôi đang sử dụng 1.0rc mới nhất Gevent phiên bản.

Một vấn đề khác mà giữ poping lên bất cứ lúc nào mặc dù URL là đúng là: Retrying (5 nỗ lực duy trì) sau khi kết nối bị phá vỡ bởi 'lỗi (2, 'Không có tập tin hoặc thư mục')':/ID/các sự kiện? hạn = 5000 & lĩnh vực = mô tả, tên, địa điểm, start_time, END_TIME & access_token = TOKEN

+1

bạn đã thử [buộc TLSv1 như được đề xuất ở đây] (http://stackoverflow.com/questions/14102416/python-requests-requests-exceptions-sslerror-errno-8-ssl-c504-eof-occurred)? – jfs

+0

Tôi cũng sẽ cố gắng sửa lỗi này. Mối quan tâm duy nhất của tôi là khi chạy tác vụ với kích thước Gevent Pool = 1, tôi không gặp bất kỳ lỗi nào, nhưng khi tôi cố gắng chạy nhiều hơn (2 đến 10) lỗi trở nên phổ biến hơn (mạng không thể truy cập được, lỗi ssl EOF, không tập tin hoặc thư mục đó). Vì vậy, với tôi nó có vẻ như vấn đề gevent của nó? – user962563

+0

Tôi không biết trạng thái hiện tại của tính tương thích 'gevent' /' requests'. Bạn đã thử 'grequests' chưa? – jfs

Trả lời

14

Sử dụng buộc TLSv1 fix theo đề nghị của JF Sebastian cố định tất cả các vấn đề mà tôi đang phải đối mặt.

gợi ý cho các câu hỏi trong tương lai liên quan đến:

  • DNSError ngoại lệ - nâng cấp Gevent từ 0.13.X để 1.0rc sửa chữa vấn đề này

  • vấn đề SSL - nhìn vào sửa chữa trong liên kết được cung cấp bởi JF Sebastian

1

Tôi đã cài đặt Python 2.7 mới nhất (2.7.11) và sự cố đã biến mất. Tôi tin rằng vấn đề thậm chí có thể được giải quyết trở lại trong 2.7.6 (Tôi đã sử dụng 2.7.5 trên Mac OSX).

+1

Tôi chỉ bị ảnh hưởng bởi vấn đề này với python 2.7.6 trên ubuntu 3.13.0-48-generic –

0

Tôi đã gặp lỗi tương tự khi tìm nạp tweet cho máy học của mình. Làm pip cài đặt sau đây đã giúp tôi. Công trình này:

pip install ndg-httpsclient 
pip install pyopenssl 
pip install pyasn1 

Xóa lỗi SSLError: EOF xảy ra vi phạm giao thức (_ssl.c: 590).

Hy vọng điều đó sẽ hữu ích.

Các vấn đề liên quan