在Google App Engine中部署python时出错

时间:2018-07-03 12:17:00

标签: python google-app-engine deployment cgi

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

  

错误:(gcloud.app.deploy)错误响应:[4]您的部署具有   未能在指定的时间内变得健康,因此被推迟   背部。如果您认为这是一个错误,请尝试调整   “就绪检查”部分中的“ 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)

2 个答案:

答案 0 :(得分:3)

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

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

并确保该网址返回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

答案 1 :(得分:0)

您在灵活的环境应用程序中运行,<android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> 配置是一种标准环境。您需要为灵活的环境使用handlers配置。来自Application startup

  

运行时使用以下命令中定义的entrypoint启动应用程序   app.yaml。入口点应启动一个响应的过程   在环境变量定义的端口上发送HTTP请求   entrypoint

没有它,您的应用程序将无法真正运行,并且无法满足运行状况检查请求。

可能有用:How to tell if a Google App Engine documentation page applies to the standard or the flexible environment