2016-11-06 178 views
2

我一直在使用Cloud Endpoints v2的小型Google App Engine(标准环境)项目。我的代码主要基于Google提供的quickstartGoogle App Engine错误:URL查找失败:http://metadata.google.internal

一切工作正常,但我在它具有不找了几个星期后,今天重新部署,而我得到以下错误,当我尝试调用端点:

error: An error occured while connecting to the server: DNS lookup failed for URL: metadata.google.internal

这之前没有发生过。这似乎是在Python导入终结点软件包时发生的。

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

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

编辑#1

一些进一步的信息:

错误从附带的google-endpoints包我已经包括在我lib文件夹谷歌的代码中的起源,每 的文档。具体而言,错误发生在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

在谷歌的端点包只需要谷歌的端点-API管理> = 1.0.0b1。在我的结尾,事情在版本1.0.0b2上工作正常,但后来我建立了一个新的lib文件夹,该文件夹降低了1.0.0b5,事情横行。所需的软件包在b2和b5之间没有改变,所以我想我可能暂时只能降级到b2。还没有尝试过。

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

编辑:2016年11月7日

测试降级谷歌的终结点的API管理包1.0.0b2。似乎正在工作,克鲁吉修正了它。如果你正在使用lib文件夹,下面将清理较新的容易出错的wsgi。py文件并放回较旧的:

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

不漂亮,但它可能会让你重新恢复业务。

在附注中,Google工程师立即回复说他很快就会看到这个问题。幸运的是,endpoints v2最终会出现beta,因为我非常喜欢它。

+0

具有相同的问题,相同的示例,相同的回溯。起初以为这是因为app.yaml中设置的instance_class和basic_scaling werent,但这不是问题 – dgmt

+0

@dgmt很高兴我不是唯一的问题。我花了几个小时,假设问题与配置有关。我已经做了进一步的发现,在上面的第二个编辑中概述。 – HondaGuy

回答

2

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

如果你想立即继续测试,并且这个错误阻止了你,你可以回到1.0.0b4,直到1.0.0b6出来。该版本的所有东西仍然可以正常工作。

感谢您将此引入我们的注意!我们正在尽最大努力在测试期间为我们的第一个常规发布做好准备,以消除所有这些皱纹。

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

+0

pip install -t lib google-endpoints-api-management == 1.0.0b4 --extra-index-url = https://gapi-pypi.appspot.com/admin/nurpc-dev --ignore-installed 收集google-endpoints-api-management == 1.0.0b4 找不到满足要求的版本google-endpoints-api-management == 1.0.0b4(来自版本:0.2.0,0.2.1,0.2.2, 0.2.4,0.2.5,0.2.7,1.0.0b1,1.0.0b2,1.0.0b5) 找到的谷歌的端点-API管理== 1.0.0b4 没有匹配的分布没有1.0。 0b4,只有1.0.0b2 – dgmt

+0

除了lib版本,这个解决方案适用于我 – dgmt

+0

该补丁解决了这个问题。谢谢,布拉德! – HondaGuy

0

(发布解决方案代表OP)

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

感谢Brad在Google上为此采取了非常快速的行动。