使用b从Google App Engine连接到Route53 API

2024-04-28 23:13:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我收到以下信息:

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时,似乎有一个问题。在


Tags: 代码httpscom信息hostzoneexceptionerror
2条回答

我可以通过编辑boto来让它发挥作用/连接.py在

在线909英寸连接.py更改:

connection.request(request.method, request.path,

^{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一起工作?没什么特别漂亮的。在

相关问题 更多 >