金字塔应用程序的服务状态实用程序
lovely-ws-status的Python项目详细描述
此包为金字塔应用程序提供服务状态实用程序。 注册您自己的状态处理程序并查看所有注册的服务状态 svc_status棱锥视图中的处理程序。
状态处理程序
状态处理程序可以是检查 应用程序堆栈。例如,可以检查数据库 连接仍在工作,或正在检查某些外部服务。地位 处理程序必须返回一个具有state属性的dict,该属性可以具有 OK、YELLOW或RED。像detail这样的附加属性可以是 可以选择添加,但将仅显示在json svc status视图中。
可调用
将状态处理程序创建为python函数:
>>> from lovely.ws.status import OK >>> def statusHandler(): ... # Do whatever you need to do to check the status ... return { ... 'state': OK ... }
注册状态处理程序:
>>> from lovely.ws.status import addStatusHandler >>> addStatusHandler('DatabaseConnection', statusHandler)
状态处理程序也可以是类,只需提供一个__call__方法:
>>> from lovely.ws.status import RED >>> class StatusHandler(object): ... def __call__(self): ... # Do whatever you need to do to check the status ... return { ... 'state': RED, ... 'detail': 'Service not available', ... } >>> statusHandler2 = StatusHandler() >>> addStatusHandler('UserService', statusHandler2)
为了简化状态提供者的实现,有一个MIXIN类 它处理状态并提供登录状态更改:
>>> from lovely.ws.status import YELLOW, GREEN >>> from lovely.ws.status.statehandler import StateHandlerMixin >>> class MyHandler(StateHandlerMixin): ... def __init__(self): ... self.setState(YELLOW) >>> myHandler = MyHandler() >>> addStatusHandler('myHandler', myHandler)
现在只需使用setState来更改状态。setState允许设置任何 状态的其他属性:
>>> myHandler.setState(GREEN, detail='running')
SVC状态视图
有一个金字塔视图可以添加到您的项目中,它创建一个 端点以查看所有注册状态提供的实时服务状态 处理程序。
要注册视图,需要在应用程序中配置此模块 在应用程序工厂中添加这两行:
config.include('lovely.ws.status.svcstatus') config.scan('lovely.ws.status.svcstatus')
调用/svc_statusendpoint将返回一个csv响应和一个输出 像这样:
DatabaseConnection OK UserService RED
还可以通过调用 svc_status带有接受头的终结点application/json或通过调用 svc_status.json终结点。其他属性如细节将 仅在json格式的输出中显示。输出如下:
{ "DatabaseConnection": { "state": "OK" }, "UserService":{ "state": "OK", "detail": "Service not available" } }
调用svc_status.prometheusendpoint将服务状态返回为 普罗米修斯的模板。输出如下:
# HELP svc_status Status 0->OK, 1->YELLOW, 2->RED # TYPE svc_status untyped svc_status{name="DatabaseConnection"} 0 # HELP svc_status Status 0->OK, 1->YELLOW, 2->RED # TYPE svc_status untyped svc_status{name="UserService"} 2
更多信息可以在SVC status test suite中找到。
探头状态视图
此视图允许检查服务是否可用,并使 服务。默认情况下,视图返回状态200和主体OK。
探测状态视图可以包含在 server.py在应用程序工厂中添加这两行:
config.include('lovely.ws.status.probestatus') config.scan('lovely.ws.status.probestatus')
退役可用于使服务不可用于负载平衡器 在服务关闭之前。
更多信息可以在probe status test suite中找到。
开发
有关如何贡献的信息可以在DEVELOPMENT.rst文件中找到。