Итак, предположим, что у вас есть «здоровье-проверку обслуживающей конечной точки» (используя 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
перед обработчики которых url:
имеет специальные символы, которые могут «проглотить» этот, конечно.
Теперь, поскольку у вас есть строгое, жестко закодированное решение маршрутизации в вашем объекте приложения, вам придется его отредактировать. На самом деле это не «редактирующий код» - это редактирование информации о конфигурации, которую вы, к сожалению, решили внедрить в строгие строковые строки в коде, а не собирать ее из кода конфигурации.
Либо сделать маршрутную менее строгим, может быть все, вплоть до в-кода:
application = webapp2.WSGIApplication([
('.*', HealthPage),
])
или если вы обязались использовать очень строгие жёстко прописанные маршруты в вашем коде, вы»можете выбрать, чтобы добавить одна строка ...:
application = webapp2.WSGIApplication([
('/howareyou', HealthPage),
('/_ah/health', HealthPage),
])
Аналогично для других систем маршрутизации (за пределами app.yaml
и другой маршрутизации конфигурации на основе сделанной для вас самой App Engine), конечно - webapp2
«s система маршрутизации нет ничего странного, ни аномальный ,
Обратите внимание, что ни один из этих изменений не остановить свой код от отбывания /howareyou
URL, если он направлен на health.py
в других (не GAE и не-GAE-подобных) внедрений - они будут служить ему так же, как они используются делать.
Если вы все равно требуете возможности перезаписи URL-адресов в app.yaml
или аналогичных мощных функциях, чтобы иметь дело с проверками работоспособности, избегая при этом необходимости такого крошечного обходного пути, вы можете, конечно, открыть запрос функции на https://code.google.com/p/googleappengine/issues/list - Я просто не могу себе представить, что он получает высокую актуальность и тысячи открытых проблем там, но, эй!, я ошибся раньше :-).
Вы можете настроить многие параметры проверки работоспособности на https://cloud.google.com/appengine/docs/python/managed-vms/#health_checking, но не AFAIK, URL-адрес, который он использует. Не можете ли вы просто обслуживать медицинские проверки по этому URL-адресу, а также любому другому? Какую специальную задачу вы пытаетесь выполнить точно? –
Вариант использования - поддержка развертывания приложений без изменения исходного кода. –
И если проверки здоровья пошли, чтобы сказать '/ health/mine', а не'/_ah/health', как это облегчит вашу задачу? Вы можете использовать 'app.yaml' (или эквивалентные механизмы в Java), чтобы переключать, какая часть вашего кода служит для проверки работоспособности, в зависимости от того, какой из двух URL-адресов вы используете. –