因此,假设您有一个“健康检查服务端点”(使用webapp2
为了明确起见,其他框架当然也会类似地工作)health.py
:
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
before任何处理程序,其url:
当然,有可能“吞掉”这个通配符。
现在,由于您的应用程序对象中有严格的、硬编码的路由决策,因此您必须对其进行编辑。这并不是真正的“编辑代码”——它正在编辑配置信息,不幸的是您决定将其作为严格的硬编码字符串嵌入到代码中,而不是从配置代码中获取它。
要么让代码内路由不那么严格,也许一直到:
application = webapp2.WSGIApplication([
('.*', HealthPage),
])
或者,如果您致力于在代码中使用非常严格的硬编码路由,您可以选择添加一行...:
application = webapp2.WSGIApplication([
('/howareyou', HealthPage),
('/_ah/health', HealthPage),
])
对于其他路由系统(除了app.yaml
以及由 App Engine 本身为您完成的其他基于配置的路由)当然 -webapp2
的路由系统并不奇怪,也没有异常。
请注意,这些编辑都不会阻止您的代码为/howareyou
URL(如果路由到)health.py
在其他(非 GAE 和非 GAE 类)部署中——它们将像以前一样提供服务。
如果尽管如此,您仍然需要“URL 重写”功能app.yaml
或类似的强大功能,为了处理运行状况检查,同时避免需要这种微小的解决方法,您当然可以在以下位置打开功能请求:https://code.google.com/p/googleappengine/issues/list https://code.google.com/p/googleappengine/issues/list-- 我只是无法想象它会变得如此紧迫,但是,嘿!,我以前就错了:-)。