Ubuntu 12.04有一個關於openssl的open bug。如果您嘗試連接到不支持TLS 1.2的主機(例如Evernote),則會出現「違反協議而發生EOF」。 請參閱https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371Google App Engine SDK urlfetch for Ubuntu中的openssl bug的解決方法12.04
在對該錯誤的評論中,有一個針對httplib.py的解決方法,其中強制使用TLS 1.1。不幸的是,這不適用於GAE SDK,因爲它使用基於urlfetch的自定義httplib。
如何強制urlfetch使用TLS 1.1或以其他方式解決此錯誤?當我上傳我的應用程序到GAE時,它工作正常,所以我只需要本地修復程序爲我的SDK。我已經嘗試用Python 2.7中的補丁庫httplib.py替換自定義的httplib.py,但這只是導致更多的問題,因爲該模塊需要ssl和套接字,而這又需要另一個os等。
編輯:回溯的最後部分:
File "evernote-sdk/lib/thrift/transport/THttpClient.py", line 122, in flush
self.code, self.message, self.headers = self.__http.getreply()
File "google_appengine/google/appengine/dist27/httplib.py", line 592, in getreply
response = self._conn.getresponse()
File "google_appengine/google/appengine/dist27/httplib.py", line 502, in getresponse
raise HTTPException(str(e))
HTTPException: ApplicationError: 6 [Errno 8] _ssl.c:504: EOF occurred in violation of protocol
這是Ubuntu 12.04,Evernote的服務器/ SDK和Google App Engine SDK的組合問題。
您可以發佈您在使用默認App Engine時獲得的回溯模塊?好像你有深入挖掘這個工作,但可能有辦法。 – schuppe
@schuppe好的,我添加了一個回溯。感謝您的關注。 – Gurgeh