Django的健康检查
项目描述
django-alive 🕺
为您的Django应用程序提供两个健康检查端点
Alive
验证WSGI服务器是否正在响应。
- 默认URL:
/-/alive/
- 成功
- 状态码:
200
- 内容:
ok
- 状态码:
- 失败:此视图永远不会返回失败。失败意味着您的WSGI服务器没有运行。
Health
验证服务是否就绪。
- 默认URL:
/-/health/
- 成功
- 状态码:
200
- 内容:
{"healthy": true}
- 状态码:
- 失败
- 状态码:
503
- 内容:
{"healthy": false, "errors": ["错误 1", "错误 2"]}
- 状态码:
默认情况下,健康端点将测试数据库连接,但可以配置为检查缓存、静态文件或任何其他自定义检查。
支持Django 3.2+和Python 3.6+。
安装
pip install django-alive
配置
将此添加到您项目的urlpatterns
path("-/", include("django_alive.urls"))
如果您想使用 healthcheck
管理命令,请将 django_alive
添加到 INSTALLED_APPS
。
启用检查
默认的“健康”端点将在数据库上执行简单的 SELECT 1
查询。您可以在 Django 设置中启用其他检查。
使用 ALIVE_CHECKS
设置来配置要包含的检查。它是一个包含第一个参数(Python 函数的路径)和第二个参数(传递给该函数的关键字参数字典)的元组列表。一个完整的示例
ALIVE_CHECKS = [
("django_alive.checks.check_database", {}),
("django_alive.checks.check_staticfile", {
"filename": "img/favicon.ico",
}),
("django_alive.checks.check_cache", {
"cache": "session",
"key": "test123",
}),
("django_alive.checks.check_migrations", {}),
]
⚠️ 警告:从版本 1.3.0 开始更改 ⚠️
注意:旧设置中将 ALIVE_CHECKS
作为字典已被废弃,改为列表形式。
内置检查
在 django_alive.checks
中定义。
def check_cache(key="django-alive", cache="default")
针对指定的缓存获取缓存键。
参数
key
(str
):要获取的缓存键(不需要存在)cache
(str
):要执行的缓存别名
def check_database(query="SELECT 1", database="default")
针对指定的数据库运行 SQL 查询。
参数
query
(str
):要执行的 SQLdatabase
(str
):要执行的数据库别名
def check_migrations(alias=None)
验证所有定义的迁移都已应用
参数
alias
(str
):可选的数据库别名(默认:检查所有定义的数据库)
def check_staticfile(filename)
验证静态文件是否可达
参数
filename
(str
):要验证的静态文件
管理命令
除了视图外,还可以通过 manage.py healthcheck
管理命令运行配置的健康检查。如果所有健康检查未通过,它将以错误代码退出。
自定义检查
django-alive
设计得很容易通过您自己的自定义检查进行扩展。只需定义一个执行检查的函数,并在失败时抛出 django_alive.HealthcheckFailure
异常。有关如何编写检查的示例,请参阅 checks.py
。
禁用健康检查的 ALLOWED_HOSTS
通常,负载均衡器在探测健康检查端点时不会传递 Host
标头。这为 Django 的主机头验证带来了问题。包含了一个中间件,它将仅在健康检查端点关闭主机检查。这是安全的,因为这些视图永远不会对 Host
标头做任何事情。
在您的 MIDDLEWARE
的 开头 插入此中间件以启用它
MIDDLEWARE = [
"django_alive.middleware.healthcheck_bypass_host_check",
# ...
]
处理 SECURE_SSL_REDIRECT
如果您的负载均衡器执行 HTTPS 终止,并且您在设置中设置了 SECURE_SSL_REDIRECT=True
,请确保您的健康检查 URL 不会也重定向到 HTTPS。在这种情况下,请将以下内容添加到您的设置中
SECURE_REDIRECT_EXEMPT = [r"^-/"] # django-alive URLs
2.0.0 (2024-08-30)
- 允许以不同的参数多次执行检查;
ALIVE_CHECKS
现在应是一个元组列表(将其设置为字典会导致弃用警告)。
1.2.2 (2024-08-14)
- 添加 GitHub Action 以运行针对受支持版本的测试
- 从 GitHub Actions 发布
1.2.1 (2021-07-23)
- 更新 PyPI 元数据
1.2.0 (2021-07-23)
- 更新测试矩阵。Python 2 不再“官方”支持。
- 如果 URL 未设置,防止中间件中出现回溯
1.1.0 (2019-11-06)
- 添加
healthcheck
管理命令 - 添加可选的
check_migrations
健康检查
1.0.1 (2018-09-10)
- 文档改进
- Python 3.7 支持
1.0.0 (2018-08-21)
- 初始发布
项目详情
下载文件
下载适用于您的平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
django_alive-2.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f7aa691db23b1065bdbaee96d8c347e3d9df2be783c9d5514f7fd82e9c9ee088 |
|
MD5 | 05924b50be9438f80c8c39d514c7eb5a |
|
BLAKE2b-256 | 2204f57684e7b157f4d1c9327284d876da7f04197b7c34308702ec201d9429e2 |
django_alive-2.0.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c8e5a767080566aefac6b05d60e4371871f292e0e32a753b6c18b8c28f473c3e |
|
MD5 | a90fdd0d142361af3dbe7ab37d087f95 |
|
BLAKE2b-256 | 7d5548839b7a01d8ad2f084b5c3a76a5acd5c7e4f3dc8d8fe7def35154a8f5c8 |