python 2.7上的urllib3谷歌应用程序引擎上的SNI错误

python 2.7上的urllib3谷歌应用程序引擎上的SNI错误,python,google-app-engine,sni,urllib3,Python,Google App Engine,Sni,Urllib3,我正试图从我的网站下载一个HTTPS页面,该页面由SNI托管在谷歌应用程序引擎上。 无论我使用什么库,都会出现以下错误: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol 我尝试了多种方法来解决此错误,包括使用urllib3 openssl monkeypatch: from urllib3.contrib import pyopenssl pyopenssl.inject_into_urllib3 但我总是得到上面提到的

我正试图从我的网站下载一个HTTPS页面,该页面由SNI托管在谷歌应用程序引擎上。 无论我使用什么库,都会出现以下错误:

[Errno 8] _ssl.c:504: EOF occurred in violation of protocol
我尝试了多种方法来解决此错误,包括使用urllib3 openssl monkeypatch:

from urllib3.contrib import pyopenssl
pyopenssl.inject_into_urllib3
但我总是得到上面提到的同样的错误


有什么想法吗?

不幸的是,对于urllib3,Python标准库直到Python 3.2才添加SNI支持。 (见附件)

要在Python2.7和urllib3中使用SNI,需要使用PyOpenSSL注入monkeypatch。 (见附件)

您的问题基本上有相同的代码,只是缺少对
pyopenssl.inject\u into\u urlib3()
调用的括号调用。解决这个问题应该会奏效

您还需要确保以下依赖项可用:

  • pyOpenSSL(使用0.13测试)
  • ndg高温超导客户端(用0.3.2测试)
  • pyasn1(用0.1.6测试)

不确定这是否是您问题中的输入错误,但行应该是
pyopenssl.injection\u into\u urlib3()
-也就是说,这是函数调用,不是属性访问。您完全正确!我愚蠢的错误。。经过测试,工作正常,谢谢:)
from urllib3.contrib import pyopenssl
pyopenssl.inject_into_urllib3()