【问题标题】:Error with App Engine split health checksApp Engine 拆分运行状况检查出错
【发布时间】:2018-06-05 17:02:45
【问题描述】:

我无法使用拆分运行状况检查部署我的 App Engine Flex Python 项目。

我已启用健康检查:

$ gcloud beta app describe
...
featureSettings:
  splitHealthChecks: true

使用docs 作为模型,我的 app.yaml 有:

readiness_check:
  path: '/health_check'
  check_interval_sec: 5
  timeout_sec: 4
  failure_threshold: 2
  success_threshold: 2
  app_start_timeout_sec: 600

liveness_check:
  path: '/health_check'
  check_interval_sec: 30
  timeout_sec: 4
  failure_threshold: 2
  success_threshold: 2

但是当我部署时,由于以下错误而失败:

  File "/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 515, in spawn_worker
    worker.init_process()
  File "/env/local/lib/python2.7/site-packages/gunicorn/workers/gthread.py", line 109, in init_process
    super(ThreadWorker, self).init_process()
  File "/env/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 122, in init_process
    self.load_wsgi()
  File "/env/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 130, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/env/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/env/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
    return self.load_wsgiapp()
  File "/env/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/env/local/lib/python2.7/site-packages/gunicorn/util.py", line 354, in import_app
    __import__(module)
  File "/env/local/lib/python2.7/site-packages/vmruntime/wsgi.py", line 48, in <module>
    wsgi_config.get_module_config_filename())
  File "/env/local/lib/python2.7/site-packages/vmruntime/wsgi_config.py", line 48, in get_module_config
    return appinfo_includes.Parse(f)
  File "/env/local/lib/python2.7/site-packages/google/appengine/api/appinfo_includes.py", line 57, in Parse
    appyaml, _ = ParseAndReturnIncludePaths(appinfo_file, open_fn)
  File "/env/local/lib/python2.7/site-packages/google/appengine/api/appinfo_includes.py", line 82, in ParseAndReturnIncludePaths
    appyaml = appinfo.LoadSingleAppInfo(appinfo_file)
  File "/env/local/lib/python2.7/site-packages/google/appengine/api/appinfo.py", line 2417, in LoadSingleAppInfo
    listener.Parse(app_info)
  File "/env/local/lib/python2.7/site-packages/google/appengine/api/yaml_listener.py", line 227, in Parse
    self._HandleEvents(self._GenerateEventParameters(stream, loader_class))
  File "/env/local/lib/python2.7/site-packages/google/appengine/api/yaml_listener.py", line 178, in _HandleEvents
    raise yaml_errors.EventError(e, event_object)
EventError: Unexpected attribute 'failure_threshold' for object of type ReadinessCheck.

我正在关注文档,所以我不确定为什么会在这里触发错误。

我唯一能想到的是我的“网站包”可能已经过时了?我不相信我的 Docker 应该安装任何 google/appengine/ 库,但我不知道我可能做错了什么。

【问题讨论】:

  • 你有最新的SDK吗?运行gcloud components update 再试一次?
  • 是的,我首先检查过,但没有得到任何更新。 ://
  • 如果您运行gcloud version,会显示哪个版本的app-engine-python
  • 看起来像 app-engine-python 1.9.64。好像几天前发布了 1.9.65,但gcloud components update 显示仍然没有更新。
  • 哦,这个东西是不是应该被Docker镜像拉进去?我正在使用已弃用的gcr.io/google_appengine/python-compat-multicore,所以也许这是由此产生的后果?让我多花点时间,重新生成一些图像,然后回复你。

标签: google-app-engine google-app-engine-python app-engine-flexible


【解决方案1】:

看来上述故障情况是由gcr.io/google_appengine/python-compat-multicore docker 映像过期引起的。

github 是最新的最新 python 文件,但相关的 Docker 映像从未重建。

我已通过查看 github 并自己重建 docker 映像并将我的 appengine flex 内容指向我自己的 parent-built-image 来修复此特定错误。

(我现在有一个单独的问题,拆分运行状况检查被发送到默认路径,并且它不允许我覆盖路径。我已将其作为错误提交到 Google 云问题跟踪器中。但至少上述问题是现在为我解决了)

【讨论】:

  • 这成功了!我无法告诉你我在这里浪费了多少小时去兔子洞。太棒了,谢谢!为了让这对我有用,我还必须在我的健康检查中设置未记录的 host 字段,例如 host: mysite.com
猜你喜欢
  • 2016-11-30
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
  • 1970-01-01
  • 2018-08-08
  • 2015-01-12
  • 2015-03-05
  • 1970-01-01
相关资源
最近更新 更多