Simple Django app/framework to publish health check for monitoring purposes
Features:
Custom checks via Python functions
Remote healthchecks
Heartbeat monitoring
Status
Installation
pip install django_healthchecks
Usage
Add the following to your urls.py:
url(r'^healthchecks/', include('django_healthchecks.urls')),
Add a setting with the available healthchecks:
HEALTH_CHECKS = {
'postgresql': 'django_healthchecks.contrib.check_database',
'cache_default': 'django_healthchecks.contrib.check_cache_default',
'solr': 'your_project.lib.healthchecks.check_solr',
}
You can also include healthchecks over http. This is useful when you want to monitor if depending services are up:
HEALTH_CHECKS = {
...
'my_microservice': 'https://my-service.services.internal/healthchecks/',
...
}
By default, http health checks will time out after 500ms. You can override this as follows:
HEALTH_CHECKS_HTTP_TIMEOUT = 0.5
By default the status code is always 200, you can change this to something else by using the HEALTH_CHECKS_ERROR_CODE setting:
HEALTH_CHECKS_ERROR_CODE = 503
You can also add some simple protection to your healthchecks via basic auth. This can be specified per check or a wildcard can be used *.
HEALTH_CHECKS_BASIC_AUTH = {
'*': [('admin', 'pass')],
'solr': [],
}
Using heartbeats
Heartbeats give a periodic update, to see whether an service was recently active. When the service doesn’t report back within timeout, a healthcheck can be triggered. To use heartbeats, add the application to the INSTALLED_APPS:
INSTALLED_APPS = [
...
"django_healthchecks",
]
Include one of these checks:
HEALTH_CHECKS = {
...
'heartbeats': 'django_healthchecks.contrib.check_heartbeats'
...
'expired_heartbeats': 'django_healthchecks.contrib.check_expired_heartbeats',
...
}
Optionally, define an initial timeout:
HEALTHCHECKS_DEFAULT_HEARTBEAT_TIMEOUT = timedelta(days=1)
Let your code track the beats:
from datetime import timedelta
from django_healthchecks.heartbeats import update_heartbeat
update_heartbeat("myservice.name", default_timeout=timedelta(days=2))
Or use the decorator:
from django_healthchecks.heartbeats import update_heartbeat_on_success
@update_heartbeat_on_success("myservice.name", default_timeout=...)
def long_running_task():
....
Each time update_heartbeat() is called, the heartbeat is reset. When a heartbeat didn’t receive an update before it’s timeout, the service name be mentioned in the check_expired_heartbeats check.
Updating timeouts
The default_timeout parameter is only assigned upon creation. Any updates happen through the Django admin. To update the timeout automatically on code deployment, use the timeout parameter instead. This will replace the stored timeout value each time the update_heartbeat() function is called, erasing any changes made in the Django admin.
Metadata
Release files for django-healthchecks 1.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| django-healthchecks-1.5.0.tar.gz | 10.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_healthchecks-1.5.0-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 22.7 kB
Release files / django-healthchecks-1.5.0.tar.gz
| Download URL | django-healthchecks-1.5.0.tar.gz |
|---|---|
| Size | 10.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0f167deaa30bde59552796799abf2a97a118bc190e8601eef713379703cf9f64
|
|
BLAKE2b-256 checksum How to use checksums |
f9d08cf815b7cadd7ba9cf9ce527c92ba323c45c4060d77d9ae8bc6a357d962d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / django_healthchecks-1.5.0-py2.py3-none-any.whl
| Download URL | django_healthchecks-1.5.0-py2.py3-none-any.whl |
|---|---|
| Size | 12.1 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
25eb021a4a94240b28d996e82775ad6c3b392a2b262360b965a24b88fcfad78d
|
|
BLAKE2b-256 checksum How to use checksums |
383cc4063946ae0dfc3d16de5615b1e3161b8d88a768d70078b9811977703d80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Security for django-healthchecks 1.5.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.