我一直在使用Cloud Endpoints v2的小型Google App Engine(标准环境)项目。我的代码主要基于Google提供的quickstart。Google 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容器引擎中运行,然后爆炸,因为元数据地址无法解析。
在谷歌的端点包只需要谷歌的端点-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,因为我非常喜欢它。
具有相同的问题,相同的示例,相同的回溯。起初以为这是因为app.yaml中设置的instance_class和basic_scaling werent,但这不是问题 – dgmt
@dgmt很高兴我不是唯一的问题。我花了几个小时,假设问题与配置有关。我已经做了进一步的发现,在上面的第二个编辑中概述。 – HondaGuy