a pluggable app that runs a full check on the deployment, using a number of plugins to check e.g. database, queue server, celery processes, etc.
Project description
This project checks the health for a number of backends and sees if they are able to connect and do a simple action.
plugin_dir.register(DjangoDatabaseBackend)
Install
Add this to urls.py
url(r'^ht/$', include('health_check.urls'))
Add required apps:
'health_check', # required
'health_check.db',
'health_check.cache',
'health_check.storage',
'health_check.contrib.celery',
'health_check.contrib.s3boto_storage',
Set up monitoring
You can use tools like Pingdom or other uptime robots. The /ht/ endpoint will respond a HTTP 200 if all checks passed and a HTTP 500 if any of the tests failed.
Machine-readable reports
If you want machine-readable status reports you can request the /ht/ endpoint with the Accept HTTP header set to application/json. The backend will return a JSON response of form:
{
"CacheBackend": "OK"
}
Writing a custom health check
Writing a health check:
class MyHealthCheckBackend(BaseHealthCheckBackend):
def check_status(self):
# The test code goes here.
# You can use `self.add_error` or raise a
# `HealthCheckException`. Similar to Django's form validation.
pass
def identifier(self):
return self.__class__.__name__ # Display name on the endpoint.
Register the backend in your app configuration:
from django.apps import AppConfig
from health_check.plugins import plugin_dir
class MyAppConfig(AppConfig):
name = 'my_app'
def ready(self):
from .backends import MyHealthCheckBackend
plugin_dir.register(MyHealthCheckBackend)
Customizing output
You can customize JSON rendering by e.g. inheriting from MainView in health_check.views and customizing the render_to_response_json method:
# views.py
from health_check.views import MainView
class HealthCheckCustomView(MainView)
def render_to_response_json(self, plugins, status):
return JsonResponse(
{str(p.identifier()): "COOL" if status == 200 else "SWEATY" for p in plugins}
status=status
)
# urls.py
import views
urlpatterns = [
# ...
url(r'^ht/$', views.HealthCheckCustomView.as_view(), name='health_check_custom')),
]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for django-health-check-2.2.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 32f63c35b4b3ddc24e968ce29130c58e37b7c2be736d199334f1febd4ee6d7ba |
|
MD5 | b430941465fba3031d255b6309c90824 |
|
BLAKE2b-256 | fbb42b40e087d162086d2116b2a4b4fd1a80ef2cdf1985d64991707f220ad598 |