Google应用程序引擎Python:部署时yaml配置文件出错
我正在使用Google应用程序引擎,Python37环境。 我今天尝试部署微服务时收到一条错误消息:Google应用程序引擎Python:部署时yaml配置文件出错,python,python-3.x,google-app-engine,google-cloud-platform,Python,Python 3.x,Google App Engine,Google Cloud Platform,我正在使用Google应用程序引擎,Python37环境。 我今天尝试部署微服务时收到一条错误消息: 我运行命令: gcloud app deploy app.yaml 获取错误信息: ... File upload done. ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: script field for handler '/.*' must be set to 'auto' for runtime python37. PS C:\path_to
我运行命令:
gcloud app deploy app.yaml
获取错误信息:
...
File upload done.
ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: script field for handler '/.*'
must be set to 'auto' for runtime python37.
PS C:\path_to_app> gcloud app deploy app.yaml
...
我的app.yaml是:
service: service_name
runtime: python37
handlers:
- url: /.*
script: main.py
它看起来与我最近部署的其他微服务完全相同,只是服务名称不同我尝试重新部署已在运行的服务,但收到相同的错误消息。
所以我仔细检查了app.yaml参考文档:
但我无法找出问题所在,也无法找出为什么以前工作过的同一个yaml文件不再工作。
有人知道在过去的几天里,谷歌应用程序引擎会出什么问题,或者会发生什么变化吗?
提前感谢。根据Python 3.7的 脚本元素唯一可接受的值是自动 以下是文档中的示例条目:
handlers:
- url: /images
static_dir: static/images
- url: /.*
secure: always
redirect_http_response_code: 301
script: auto
我在部署具有blueprint结构的flask应用程序时遇到此错误。解决方案是将
main.py
文件与app.yaml
文件放在同一目录中。在main.py
文件中,从app import app导入app对象(此处第一个“app”是包含创建flask app实例的init文件的文件夹)。完成此操作后,将脚本设置为自动应该可以正常工作。前面的答案虽然正确,但只是故事的一部分。OP的原始问题利用了App Engine first generation(“Gen1”)运行时应用程序的App.yaml
配置文件进行路由,需要处理程序中的脚本:
指令:
。虽然这对Gen1(go111
,python
[2.5],python27
,php55
)应用程序来说是一个非常有效的app.yaml,但它对下一代(“Gen2”)应用程序不起作用
注意:Python 2仅由App Engine Gen1支持,而Python 3仅由App Engine Gen2(标准或Flex)支持,因此需要记住这些区别。(不幸的是,这意味着从webapp2
迁移到处理路由的web框架,即Django、Flask等。)
appengine,这就是为什么script:auto
是唯一的选项。另一种选择是提供替代,它可以让您完全避免script:auto
或实现处理程序:
;签出。该页面声明:“脚本元素唯一可接受的值是auto。”您有script:main.py
我试图将其更改为auto,但也没有成功。似乎我第一次尝试时就用打字错误把它搞糟了。我再次尝试将其更改为script:auto
,结果成功了。谢谢蛇怪,你回答了我的问题。这是一个测试版服务,这样的机会可能会发生。谢谢奥马尔。snakecharmedb也指出了这一点。这是一个测试版服务,看起来他们本周已经改变了。我已经修好了,你已经测试过了吗?默认情况下,它是否仍然使用main.py?是否还需要编写dispach.yaml和/或index.yaml?文件对此并不清楚。