在Google App Engine中部署python时出错

问题描述 投票:1回答:2

我正在尝试部署python应用程序,我收到以下错误消息:

错误:(gcloud.app.deploy)错误响应:[4]您的部署在指定的时间内未能变得健康,因此被回滚。 如果您认为这是一个错误,请尝试调整'readiness_check'部分中的'app_start_timeout_sec'设置。

我的app.yaml是:

runtime: python
runtime_config:
  python_version: 3
env: flex
service: newservice
handlers:
- url: /
  script: hello.py

manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

我相信这个问题与yaml文件有关,因为我以前没有遇到任何问题部署过一个示例应用程序(在我的yaml上使用入口点),然后当我添加一个新的python脚本并在yaml文件中引用它时(使用处理程序) ,运行我的消息块)我开始得到这个错误。

编辑:在GAEFan回答之后,我的问候包括readiness_check的处理程序:

def post():
    self.response.headers['Content-Type'] = 'application/json'   
    obj = {
      'status': 200, 
    } 
    self.response.out.write(json.dumps(obj))

webapp2.WSGIApplication([
    ('/readiness_check', post())
], debug=True)
python google-app-engine deployment cgi
2个回答
3
投票

默认情况下启用Readiness checks 。 因此,您应该为它们设置url处理程序。 在这种情况下,GAE正在向/readiness_check发送请求,但您的app.yaml没有该URL的处理程序。 尝试这个:

handlers:
- url: /.*
  script: hello.py

并确保url返回200或类似的响应。 要自定义准备情况检查:

readiness_check:
  path: "/readiness_check"
  check_interval_sec: 5
  timeout_sec: 4
  failure_threshold: 2
  success_threshold: 2
  app_start_timeout_sec: 300

要么:

liveness_check:
  path: "/liveness_check"
  check_interval_sec: 30
  timeout_sec: 4
  failure_threshold: 2
  success_threshold: 2

详情请访问: https//cloud.google.com/appengine/docs/flexible/custom-runtimes/configuring-your-app-with-app-yaml#legacy_health_checks


0
投票

您在灵活的环境应用程序中运行, handlers配置是标准环境。 您需要为灵活环境使用entrypoint配置。 从应用程序启动

运行时使用app.yaml定义的entrypoint启动应用程序。 入口点应该启动一个进程,响应环境变量PORT定义的端口上的HTTP请求。

没有它,您的应用程序无法正常工作,无法提供运行状况检查请求。

也许有用: 如何判断Google App Engine文档页面是否适用于标准环境或灵活环境

© www.soinside.com 2019 - 2024. All rights reserved.