Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google应用程序引擎Python:部署时yaml配置文件出错_Python_Python 3.x_Google App Engine_Google Cloud Platform - Fatal编程技术网

Google应用程序引擎Python:部署时yaml配置文件出错

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

我正在使用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_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?文件对此并不清楚。