【问题标题】:dev_appserver.py with runtime go111 url dispatch problem带有运行时 go111 url 调度问题的 dev_appserver.py
【发布时间】:2019-08-03 14:21:29
【问题描述】:

我仍在努力让我的旧式应用引擎至少在 go111 下工作(由于对 memcache 的依赖,go112 无法工作)。我现在因静态文件的 app.yaml 配置问题而绊倒,我之前使用了完全静态的目录布局,只是在根目录中指定了一些动态处理程序,如下所示:

runtime: go111

handlers:
- url: /_ah/.*
 script: auto
 login: admin
 secure: always
- url: /dynamic
 script: auto
 secure: always
- url: /admin/.*
 script: auto
 login: admin
 secure: always
- url: (.*)/
 static_files: html\1/index.html
 upload: html/index.html
 secure: always
- url: /(.*\.map)
 mime_type: application/json
 static_files: html/\1
 upload: html/(.*\.map)
 secure: always
- url: /
 static_dir: html
 secure: always

dev_appserver.py 永远不会调用我的动态入口点。在生产中这确实有效,但我仍在进行转换并希望在本地进行测试。任何提示如何说服 dev_appserver.py 让我这样做?顺便说一句,我的 gcloud 工具从今天开始更新。

【问题讨论】:

  • 你能向我澄清一些事情吗?因为我不确定您面临的问题是什么。我假设您正在使用 App Engine 标准,因为在 app.yaml 中未指定,并且您使用的是“dev_appserver.py”(仅适用于标准),对吗?您已经使用配置处理程序来处理静态文件并使用入口点 (cloud.google.com/appengine/docs/standard/go111/config/…),对吧?
  • 它在部署时有效,但在使用本地服务器 dev_appserver.py cloud.google.com/appengine/docs/standard/python/tools/… 时不处理 url,对吗?
  • 是的,我正在使用标准,如果没有指定其他任何内容,这就是我得到的。我对 memcache 有依赖关系,否则我还无法解决,所以我被 go111 运行时困住了。以前我一直在使用带有 api 版本 go1 的 go 运行时。它确实可以使用 gcloud 命令完美部署,但是使用 dev_appserver.py 在本地调试不起作用,它只会提供静态内容并且不会调用任何处理程序。

标签: google-app-engine go


【解决方案1】:

您的问题是为什么您的应用程序在部署到生产时运行良好,但在使用 dev_appserver.py 在本地运行时却无法运行,以及如何使用 运行它dev_appserver.py。答案是:

您将无法使用 dev_appserver.py 在本地正确运行它,因为它不支持运行时 Go 1.11。查看Local Development Server Options 文档,只有“Go 1.9”的链接。

(如您所见,“Go 1.11”和“Go 1.12”的链接已禁用,即:不支持。)

Documentation for Go 1.11 在 App Engine Standard 上声明,为了在本地测试您的应用程序,您必须使用“运行”命令(注意它没有提到 dev_appserver.py 工具)。命令是这样的:

go run [build flags] [-exec xprog] package [arguments...]

有关该命令的更多信息,请转到here

我相信您可能已经阅读过这篇文章,但是,要了解有关从 Go1.9 到 Go1.11 的迁移过程的更多信息,请阅读documentation

您已声明“运行”命令不适用于您的情况。因此,解决方法是使用test your application directly into App Engine,但不迁移流量

在部署您的测试版本时使用:

gcloud app deploy --no-promote

要访问它,请转到:

http://VERSION_ID.default.YOUR_PROJECT_ID.appspot.com

如果一切顺利,您可以在Cloud Console UI 上迁移流量,选择您刚刚部署的版本并点击“迁移流量”。

【讨论】:

  • 如果我查看 dev_appserver.py 文档,它只有一个“go”链接,没有关于版本的任何内容。对于标准的应用程序引擎应用程序,简单的“运行”是行不通的,因为您没有 dev_appserver.py 启动的本地 api 模拟东西,这是任何标准应用程序引擎导入工作所必需的,例如,您有没有本地内存缓存模拟。 Memcache 是我无法从我的 appengine 应用程序中删除的功能之一,而对 redis 云的 1.12 引用对于我的小型应用程序来说只是一种昂贵的方式。
  • 作为“开发”版本运行的版本非常适合我的其他工作流程,所以我暂时可以使用它。但是不能在离线时(例如在旅行时)进行本地测试是很糟糕的。我相信我将不得不重新考虑使用 appengine 的决定,因为我是一个拥有良好互联网接入的数字游民是一个例外,而不是常态。
  • 很高兴知道该解决方法将能够适应您的工作流程
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-05
  • 2020-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-21
相关资源
最近更新 更多