Framework for adding an endpoint for health checks to your project.
- Source code
- http://github.com/pennersr/django-healthpoint
Install the app:
# settings.py INSTALLED_APPS = [ ... 'healthpoint' ] # If specified, this user is able to see the details for each # individual check in the endpoint. HEALTHPOINT_BASICAUTH_USERNAME = 'john' HEALTHPOINT_BASICAUTH_PASSWORD = 'doe' # If set to True authentication is required for executing the # health checks. HEALTHPOINT_AUTH_REQUIRED = True # urls.py urlpatterns = [ ... url(r'^', include('healthpoint.urls')), ]
Add a module named health.py
to any of your apps. For example:
from datetime import timedelta from django.contrib.auth.models import User from django.utils import timezone from healthpoint.decorators import health_check @health_check def user_signup(): last_user = User.objects.last() time_since_last_signup = timezone.now() - last_user.date_joined # Return True/False, throw an exception, or return a tuple with a # detail message. return ( time_since_last_signup <= timedelta(days=1), "last signup was: {}".format(last_user.date_joined))
The health checks can be accessed via the /health/
endpoint:
It executes all health checks, and reports status 200 if all checks succeed, status 500 otherwise.
If a staff user is logged in, the endpoint reports the result for each individual check:
{ "success": {}, "error": { "myproject.myapp.health.user_signup": "Last signup was: 2017-10-29 08:45:51" } }
To provide more detail on the result, the
@health_check
can return a tuple(success:bool, detail:str)
. The detail message will be listed in the result.