将 gcloud 控制台用于 Google App Engine 会导致指标出现运行时错误

Using gcloud console for Google App Engine causes a Runtime error from metrics

我正在尝试通过浏览器使用 gcloud 控制台。当我克隆我的存储库并启动开发服务器时,我从指标中收到运行时错误:

$ dev_appserver.py $PWD
Traceback (most recent call last):
  File "/google/google-cloud-sdk/platform/google_appengine/dev_appserver.py", line 101, in <module>
    _run_file(__file__, globals())
  File "/google/google-cloud-sdk/platform/google_appengine/dev_appserver.py", line 97, in _run_file
    execfile(_PATHS.script_file(script_name), globals_)
  File "/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 1041, in <module>
    main()
  File "/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 1037, in main
   dev_server.stop()
 File "/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 845, in stop
   metrics.GetMetricsLogger().Stop()
File "/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/metrics.py", line 117, in Stop
  total_run_time = int((Now() - self._start_time).total_seconds())
TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'NoneType'

我没有直接调用指标模块或以其他方式使用它。我怎样才能在控制台或代码中禁用它,以便我可以正常启动我的应用程序?

通过SDK本地运行正常

我通过解决我的 app.yaml 文件中的一个问题实现了此功能,我的其中一条路线未正确指定。

用前导斜杠修复该路由,并在路由正则表达式中转义点,似乎也解决了错误:

diff --git a/app.yaml b/app.yaml
index 8a165a0..39c68b3 100644
--- a/app.yaml
+++ b/app.yaml
@@ -13,7 +13,7 @@ handlers:
 - url: /ui
   static_dir: ui

-- url: robots.txt
+- url: /robots\.txt$
   static_files: robots.txt
   upload: robots.txt

dev_appserver.py 最近在 Cloud SDK 版本 144.0.0 中添加了指标,供在 SDK installation. The Cloud SDK installation provided in the Cloud console at https://console.cloud.google.com 期间选择加入的用户也选择使用这些指标。

为了响应这个 post,我们添加了一些额外的逻辑来防止将来出现这种误导性的错误消息。此更新将出现在即将发布的版本之一中。