gpt4 book ai didi

google-app-engine - 如何为托管 VM 配置 Google App Engine 健康检查端点

转载 作者:太空宇宙 更新时间:2023-11-03 15:35:16 25 4
gpt4 key购买 nike

Google App Engine 从托管虚拟机请求/_ah/health 以进行健康检查。

我尝试部署一个我不是代码维护者的项目,它将作为托管虚拟机部署以进行自动缩放和健康检查。

目前 app.yaml 不支持重写规则,如果支持,我可以将/_ah/health 指向/ping 端点。这会很棒,因为可以在不更改代码的情况下实现健康检查。

在 app.yaml 中有处理程序的配置,我的理解是处理程序用于谷歌运行时,而不是用于托管虚拟机。

我想更改/_ah/health 请求的位置。有没有办法进行此更改?

最佳答案

因此,假设您在 health.py 中有一个“健康检查服务端点”(使用 webapp2 确定性,其他框架当然也可以类似地工作):

class HealthPage(webapp2.RequestHandler):
def get(self):
self.response.write('<html><body><p>I\'m fine!</p></body></html>')

不幸的是,您还对路由信息进行了硬编码,例如在同一个文件中(而不是从易于修改和推送的配置文件中更正确地读取它):

application = webapp2.WSGIApplication([
('/howareyou', HealthPage),
])

现在,要从同一个 HealthPage 处理程序提供健康检查,您需要编辑 app.yaml 以具有:

handlers:
- url: /_ah/health
script: health.application

任何其 url: 具有通配符的处理程序之前,当然,这可能会“吞噬”这个通配符。

现在,由于您在应用程序对象中有一个严格的、硬编码的路由决策,您必须对其进行编辑。这并不是真正的“编辑代码”——它是在编辑配置信息,不幸的是,您决定将其作为严格的硬编码字符串嵌入到您的代码中,而不是从配置代码中提取它。

要么让代码内路由不那么严格,也许一直到:

application = webapp2.WSGIApplication([
('.*', HealthPage),
])

或者如果您致力于在您的代码中使用非常严格的硬编码路由,您可能会选择添加一行...:

application = webapp2.WSGIApplication([
('/howareyou', HealthPage),
('/_ah/health', HealthPage),
])

对于其他路由系统(除了 app.yaml 和 App Engine 本身为您完成的其他基于配置的路由)当然也类似——webapp2 的路由系统没有什么奇怪的,也没有异常。

请注意,如果您的代码在其他(非 GAE 和非 GAE-像)部署——他们会像以前一样提供服务。

如果尽管如此,您仍然需要 app.yaml 中的“URL 重写”功能或类似的强大功能来处理健康检查,同时避免需要这种微小的解决方法,您当然可以在 https://code.google.com/p/googleappengine/issues/list 打开功能请求-- 我无法想象它会变得如此紧迫,而那里有数以千计的未解决问题,但是,嘿!我以前错了:-)。

关于google-app-engine - 如何为托管 VM 配置 Google App Engine 健康检查端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27819610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com