Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Django health check and test-that-it-works application.
Python
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
demo
doctor
etc
.gitignore
.travis.yml
CHANGES.md
LICENSE
MANIFEST.in
Makefile
README.md
VERSION
setup.py

README.md

Django Doctor

django-doctor is a Django pluggable application for checking the operational status of a Django installation. It includes checking that caching and storage is correctly set up, that email is working, etc.

This is an early draft, so use it at your own risk.

Installation

Install django-doctor (available on PyPi):

pip install django-doctor

Add it to INSTALLED_APPS in your settings.py (so Django can locate templates):

INSTALLED_APPS += ['doctor']

And add it to your root URLconf:

urlpatterns = patterns('',
   url(r'^doctor/', include('doctor.urls')),
   ...
)

Settings

These are the available configurable settings, along with their default values:

Name Default Description
DOCTOR_BASE_TEMPLATE 'base.html' The template all the doctor templates should inherit from
DOCTOR_SERVICES 'doctor.services.cache.CacheServiceCheck',
'doctor.services.celery_check.CeleryServiceCheck',
'doctor.services.email.EmailServiceCheck',
'doctor.services.storage.StorageServiceCheck',
Paths to service check classes.
DOCTOR_STORAGE_CLASSES settings.DEFAULT_FILE_STORAGE,
settings.STATICFILES_STORAGE,
Paths to storage classes to check.

Services

We are working on making a pluggable structure for the service check, work in progress. Checks for cache, Celery, email and storages are currently included by default.

Tests

Run unit tests by running python setup.py test

Write and run health checks just as tests

How to run health checks with nose

Use nose's attrib plugin to select only tests with "is_healthcheck" attribute:

nosetests --all-modules --attr="is_healthcheck"

The "--all-modules" option is required because, by default, nose's will ignore tests in the "healthchecks" directory, because of the match pattern. See also "--match" option.

TODO

  • Set up the project tests so they can run standalone
  • Refine the service class approach
  • Include sending of test email in a view?
  • Implement more health checks:
    • Databases
    • Haystack?
    • Sentry?
    • request.is_secure() is properly set up
Something went wrong with that request. Please try again.