Framework for adding an endpoint for health checks to your project.
- Source code
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.