我收到以下信息:
2014-02-04 09:55:10.515 encountered error exception, reconnecting
2014-02-04 09:55:10.515 establishing HTTPS connection: host=route53.amazonaws.com, kwargs={'port': 443, 'timeout': 70}
它继续重试一段时间,然后我看到错误:
^{pr2}$这是使用python boto 2.24.0,我使用SDK在本地和在GAE上部署时进行了测试。在
我使用的代码在以下位置中断:
zone = conn.get_zone("myzonename.com.")
一定很简单。我试着回去用旧版本的boto看看它是否是一种倒退,但没有这样的运气。 AWS凭证在中定义为环境变量应用程序yaml. SSL库也通过以下方式启用:
- name: ssl
version: latest
如果我不使用appenginesdk直接在Python中运行代码,一切正常。但是当HTTP请求通过urlphetch API时,似乎有一个问题。在
我可以通过编辑boto来让它发挥作用/连接.py在
在线909英寸连接.py更改:
到
^{pr2}$这可不是个好办法。我希望博图的好心人会注意到这一点,并找到一个适当的方法来修复它,使它在GAE上开箱即用。在
这似乎与Google在“Google/appengine/dist27/gae峎override”中的httplib有关。注意,它说它不能连接到http://route53。亚马逊网站. 在
Google的HTTPConnection类将_协议定义为“http”,并将在getresponse()中使用它,除非\u url以协议开头。在我的测试中,url只是主机后面的路径,所以Google的httplib使用HTTP而不是HTTPS,Amazon拒绝了。包跟踪证实了这一点。在
如何让它与谷歌的httplib协同工作的问题仍然存在。当我了解到更多信息时,我会更新这个,但这至少是一个开始。在
编辑:请求将除去路径之外的所有内容adapters.py/HTTPAdapter/request_url,说这是我们应该使用的,除非使用代理。我不知道为什么会这样,但我不熟悉请求。(编辑:哦,因为它在HTTP请求中。命令。)
编辑2:(一旦我弄清楚了,我会把它清理干净的。连接被创建为HTTPSConnection,但出于某种原因,协议仍然设置为“http”。在
编辑3:在请求中'连接.py,HTTPSConnection继承自HTTPConnection,后者继承自Google的HTTPConnection。从Google的httpconnection中从未使用过httplib。在
编辑4:Python的标准httplib使用自连接定义()self.sock公司(),它用于将数据发送到服务器。请求重写其连接类中的这些方法。Google的httplib使用urlphetch在getresponse()中执行实际的数据发送。这似乎使它与请求的工作方式根本不兼容。在
不知道怎么解决这个问题。请求的HTTPSConnection类中存在多重继承?手动设置协议以与GAE一起工作?没什么特别漂亮的。在
相关问题 更多 >
编程相关推荐