2013-10-20 7 views
5

पर एसएनआई त्रुटि मैं एसएनआई के साथ Google App Engine पर होस्ट की गई मेरी साइट से एक HTTPS पृष्ठ डाउनलोड करने का प्रयास कर रहा हूं।python पर urllib3 2.7 Google ऐप इंजन

from urllib3.contrib import pyopenssl 
pyopenssl.inject_into_urllib3 

लेकिन मैं हमेशा मिलती है:

[Errno 8] _ssl.c:504: EOF occurred in violation of protocol 

मैं urllib3 openssl monkeypatch का उपयोग कर सहित कई मायनों में त्रुटि को हल करने की कोशिश की है: कोई फर्क नहीं पड़ता पुस्तकालय मैं उपयोग करते हैं, मैं निम्नलिखित त्रुटि मिलती है ऊपर वर्णित वही त्रुटि।

कोई विचार?

+1

सुनिश्चित नहीं है कि यह आपके प्रश्न में एक टाइपो है, लेकिन लाइन 'pyopenssl.inject_into_urllib3()' होना चाहिए - यानी, यह एक फ़ंक्शन कॉल है, न कि संपत्ति का उपयोग। – shazow

+0

आप पूरी तरह से सही हैं! मेरी बेवकूफ गलती .. परीक्षण और काम किया, धन्यवाद :) – Tzach

उत्तर

9

दुर्भाग्यवश urllib3 के लिए, पायथन मानक लाइब्रेरी ने पायथन 3.2 तक एसएनआई समर्थन नहीं जोड़ा। (Issue #118 @ urllib3 देखें)

पायथन 2.7 में एसएनआई का उपयोग करने के लिए urllib3 के साथ, आपको PyOpenSSL इंजेक्शन बंदरपैच का उपयोग करने की आवश्यकता होगी। (Issue #156 @ urllib3 देखें)

from urllib3.contrib import pyopenssl 
pyopenssl.inject_into_urllib3() 

आपका प्रश्न मूल रूप से, एक ही कोड था सिवाय इसके कि इसे याद आ रही थी कोष्ठकों pyopenssl.inject_into_urllib3() कॉल पर कॉल करें। फिक्सिंग कि चाल चलाना चाहिए। परीक्षण किया

  • pyOpenSSL (0.13 के साथ परीक्षण)
  • ndg-httpsclient (0.3.2 के साथ परीक्षण)
  • pyasn1 (:

    आप निम्न निर्भरता उपलब्ध करने के लिए सुनिश्चित करने की आवश्यकता होगी 0.1.6 के साथ)

संबंधित मुद्दे