Google App Engine错误:网址的DNS查找失败:http://metadata.google.internal

时间:2016-11-06 04:15:44

标签: google-app-engine google-cloud-endpoints

我一直致力于使用Cloud Endpoints v2的小型Google App Engine(标准环境)项目。我的代码主要基于Google提供的quickstart

一切都运行良好,但是我在几周没看过它之后今天重新部署了,当我尝试呼叫端点时,我收到以下错误:

  

错误:连接到服务器时出错:URL的DNS查找失败:metadata.google.internal

之前没有发生这种情况。当Python导入端点包时似乎正在发生。

我的端点没有做任何花哨的事情 - 我没有从示例EchoApi更改源代码。无论我是尝试通过API Explorer还是通过Curl访问API,错误都会在GCP Logging控制台中结束。

我在部署期间没有遇到任何错误。

编辑#1

进一步的信息:

错误源自我在google-endpoints文件夹中包含的lib包中附带的Google代码。 文件。具体而言,错误发生在google/api/control/wsgi.py的第54行。

基本上,它正在使用urllib2向metadata.google.internal发出请求。

我猜这个地址只能从Google Cloud中获取,无论出于何种原因,托管我的应用的实例都无法对其进行DNS查找。

编辑:#2

再挖一点。

似乎错误源自google-endpoints-api-management软件包。 10月19日承诺对该软件包的更改似乎引入了额外的平台报告。系统会查询metadata.google.internal以检查代码是否在Google容器引擎中运行,然后它会爆炸,因为元数据地址无法解析。

这是提交: https://github.com/cloudendpoints/endpoints-management-python/commit/0a37d0e443091053ed03e455e06d3a0ae770999f

google-endpoints包只需要google-endpoints-api-management> = 1.0.0b1。在我的结尾,在版本1.0.0b2上工作正常,但后来我构建了一个新的lib文件夹,它导致了1.0.0b5,并且事情进展顺利。 b2和b5之间所需的包没有变化,所以我想我暂时可能只能降级到b2。尚未尝试过。

向Google Dev发送了一封电子邮件。也许他会提出进一步的提示。

编辑:2016-11-07

测试将google-endpoints-api-management软件包降级为1.0.0b2。似乎工作,kludgy修复原样。如果您正在使用lib文件夹,则以下内容将清除较新的容易出错的wsgi.py文件并放回旧文件:

pip install -t lib google-endpoints-api-management==1.0.0b2 --upgrade

不漂亮,但它可能会让你恢复营业。

另一方面,Google工程师立即回复说他很快就会看到这个问题。幸运的是,端点v2最终将退出测试阶段,因为到目前为止我真的很喜欢它。

2 个答案:

答案 0 :(得分:2)

这将在即将发布的google-endpoints-api-management软件包补丁中修复(将为1.0.0b6)。它可能会在11月6日星期一的某个时间发布。

如果您想立即继续测试并且此错误阻止了您,则可以返回1.0.0b4直到1.0.0b6出来。该版本的所有内容仍然可以正常工作。

感谢您引起我们的注意!我们正在努力在测试期间消除所有这些皱纹,为我们的首次发布做准备。

编辑:1.0.0b6已经发布并解决了这个问题。感谢您在我们的测试阶段耐心等待!

答案 1 :(得分:0)

(代表OP发布解决方案)

Google已发布google-endpoints-api-management软件包的1.0.0b6版本来解决此问题。它解决了我的问题。对于遇到此问题的任何人,请清理您的lib文件夹并重新安装google-endpoints包。这将带来新的google-endpoints-api-management软件包。

感谢Brad对Google的快速行动。