This project checks a number of backends, if they are able to connect and do a simple action, e.g. check out the django ORM backend:
class DjangoDatabaseBackend(BaseHealthCheckBackend): def check_status(self): try: obj = TestModel.objects.create(title="test") obj.title = "newtest" obj.save() obj.delete() return True except IntegrityError: raise ServiceReturnedUnexpectedResult("Integrity Error") except DatabaseError: raise ServiceUnavailable("Database error")
The project is made using some of the same codes, that the django admin site uses - so when you have sucessfully written a new plugin, you register it to the pool, e.g.
Add this to urls.py
Add required apps:
'health_check', 'health_check_celery', 'health_check_db', 'health_check_cache', 'health_check_storage',
(remember to add dependencies, e.g. djcelery - however you should have that already, if you have celery running).
You'll also have to make sure that you have a
result backend <http://celery.readthedocs.org/en/latest/configuration.html?highlight=result_backend#std:setting-CELERY_RESULT_BACKEND>_
If you are using celery 3, use
health_check_celery3 instead of
Set up monitoring
E.g. add to pingdom - django-health-check will return HTTP 200 if everything is OK and HTTP 500 if anything is not working.
Python 2.7+ (Yes, thats right, we have Python 3 support)