跳转到主要内容

Pyramid应用程序服务状态工具

项目描述

https://img.shields.io/pypi/v/lovely-ws-status.svg https://img.shields.io/pypi/pyversions/lovely-ws-status.svg https://travis-ci.org/lovelysystems/lovely-ws-status.svg?branch=master

此软件包为Pyramid应用程序提供服务状态工具。注册您自己的状态处理程序,并在Pyramid的svc_status视图中查看所有注册处理程序的服务状态。

状态处理程序

状态处理程序可以是任何检查应用程序堆栈任何部分的方法或类。例如,这可以是一个检查数据库连接是否仍然正常工作的检查,或者检查某些外部服务。状态处理程序必须返回一个包含状态属性的字典,该状态属性可以是OKYELLOWRED的值。可以可选地添加额外的属性,如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/jsonsvc_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 (10.2 kB 查看散列)

上传时间

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面