Python 3.7本地开发服务器新应用程序引擎应用程序的选项

Mar*_*yer 8 google-app-engine python-3.x

我有一个app-engine应用程序,它在标准的Python3运行时上部署并运行.我也可以使用常规命令在本地运行它flask run.但我无法按照我在2.7运行时运行应用程序的方式运行它dev_appserver.py.我使用的是最新gcloud版本,但运行dev_appserver.py结果如下:

错误:Python 3及更高版本与Google Cloud SDK不兼容.请使用Python版本2.7.x.

我认为我们不应该这样做,直到它看到:https: //cloud.google.com/appengine/docs/standard/python3/tools/local-devserver-command

首先是:

Python 3.7本地开发服务器选项

用法:
dev_appserver.py [options] yaml_path [files ...]

是否dev_appserver.py与Python3兼容(也许我在路径中有一个旧版本)?如果没有,是否有一种在本地运行应用程序的新方法,它将遵循app.yaml(如正确处理静态路径)并提供其他细节,如提供的本地数据存储dev_appserver.py

Dan*_*scu 7

dev_appserver.py对Python 3 的支持仍然有限.从运行本地开发服务器:

注意:

  • 运行dev_appserver需要在本地计算机上存在Python 2.7.12+.
  • 更新后的dev_appserver不支持在Windows上开发Python 3应用程序.

可能就是为什么它不是本地开发的推荐解决方案(或至少还没有).从本地运行:

我们建议您依赖于Google Cloud SDKdev_appserver随附的本地开发服务器等工具.但是,如果要将现有App Engine应用程序从Python 2迁移到Python 3,我们已更新以促进此过程.对于所有其他本地开发方案,我们建议使用标准的Python测试方法.dev_appserver

例如,您通常可以使用Flask的开发服务器运行Flask应用程序:

python main.py
Run Code Online (Sandbox Code Playgroud)

可以使用以下命令启动Django应用程序:

python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

要模拟生产App Engine环境,可以在本地运行完整的Web服务器网关接口(WSGI)服务器.要执行此操作,请在app.yaml中使用与entrypoint相同的命令,例如:

gunicorn -b :$PORT main:app
Run Code Online (Sandbox Code Playgroud)

  • 他们建议的解决方案还有很多不足之处,首先,app.yaml上的url处理程序如何呢?现在我们需要在我们的python应用程序上复制它 - 并且无法在生产之前测试它.第二,这个"更新"的dev_appserver在哪里?或者怎么会得到它?更新gcloud会产生相同的错误.糟糕的app引擎. (4认同)
  • @plumSemPy这也是我的挫败感.在第1代GAE中,几乎所有的开发和测试都可以在本地完成.在第2代,人们必须不断部署他的应用程序以进行测试,从而减慢开发速度.我决定坚持使用第1代,然后如果我需要客户端库,在Gen 2 GAE中为我的主要Gen 1应用程序制作单独的"API"应用程序.允许大多数开发仍在本地完成. (3认同)
  • 将应用程序迁移到 python 3 是一场噩梦。看起来谷歌确实还没有准备好推出这个,但由于即将弃用 python 2,不得不这样做。由于缺少应用程序服务器,本地开发变得更加困难,而且文档和功能与 python 2 上的内容仍然相差很远,这真的令人沮丧。 (3认同)
  • 这真的很烦人,几乎就像Google一样,不再希望用户使用App Engine标准平台。AppEngine上的所有良好功能都随Paython3一起使用,因此从2.7 Python3移植应用程序基本上是一种重新编写,如果我们要重新编写应用程序,我们不妨看看其他提供商。 (2认同)
  • 现在是2019-06-04,情况仍然是一个问题。最大的问题是无法运行本地版本的Google Cloud Store。我可能是错的。我只是看不到这样做的方法。 (2认同)