我一直在使用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