Pyramid应用程序服务状态工具
项目描述
此软件包为Pyramid应用程序提供服务状态工具。注册您自己的状态处理程序,并在Pyramid的svc_status视图中查看所有注册处理程序的服务状态。
状态处理程序
状态处理程序可以是任何检查应用程序堆栈任何部分的方法或类。例如,这可以是一个检查数据库连接是否仍然正常工作的检查,或者检查某些外部服务。状态处理程序必须返回一个包含状态属性的字典,该状态属性可以是OK、YELLOW或RED的值。可以可选地添加额外的属性,如detail,但仅在JSON SVC状态视图中显示。
作为可调用对象
创建状态处理程序作为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)
混入类
为了简化状态提供者的实现,有一个混入类可以处理状态并提供状态变化的日志记录
>>> 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状态视图
有一个Pyramid视图可以添加到您的项目中,该视图创建了一个端点,可以查看由所有注册状态处理程序提供的实时服务状态。
要注册视图,您需要通过在应用程序中添加这两行来配置此模块
config.include('lovely.ws.status.svcstatus') config.scan('lovely.ws.status.svcstatus')
调用 /svc_status 端点将返回一个类似以下的CSV响应
DatabaseConnection OK UserService RED
也可以通过调用带有接受头 application/json 的 svc_status 端点或调用 svc_status.json 端点来以JSON格式接收响应。额外的属性,如详细信息,仅在JSON格式输出中显示。输出将如下所示
{ "DatabaseConnection": { "state": "OK" }, "UserService":{ "state": "OK", "detail": "Service not available" } }
调用 svc_status.prometheus 端点将以Prometheus模板的形式返回服务状态。输出将如下所示
# 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状态测试套件 中找到。
探针状态视图
此视图允许检查服务是否可用,并退役服务。默认情况下,视图返回状态码200和正文OK。
可以通过在应用工厂中添加以下两行将探针状态视图包含到Pyramid项目中 server.py 文件
config.include('lovely.ws.status.probestatus') config.scan('lovely.ws.status.probestatus')
退役可以在服务关闭之前使服务对负载均衡器不可用。
更多信息可以在 探针状态测试套件 中找到。
开发
有关如何贡献的信息可以在 DEVELOPMENT.rst 文件中找到。
项目详情
lovely-ws-status-1.0.0.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | ff5e610c6ce3951654448bd3f033866676bb67f4bfdb4bbed6f56bc98c98c257 |
|
MD5 | 3ceab913fc7e327995b4b1efb8d0e1f9 |
|
BLAKE2b-256 | 4d47692a023401c541ebfb469c25bb155977e124ea9160dc0e830355a3f2d03b |