mwarkentin/django-watchman
mwarkentin/django-watchman has 546 GitHub stars and 65 forks. GitHot measured 0 stars in 24 hours and 0 in 7 days. Last checked 2026-11-09 23:18 UTC. Last push 2026-11-02.
django-watchman exposes a status endpoint for your backing services like databases, caches, etc.
What you can do
- Status endpoint -- JSON response with the health of all backing services
- Human-friendly dashboard -- HTML dashboard at /watchman/dashboard/
- Built-in checks -- Databases, caches, storage, and email out of the box
- Custom checks -- Write your own checks and plug them in
Measured star growth
- in 24h
- 0
- in 7 days
- 0
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Originaldjango-watchman
django-watchman exposes a status endpoint for your backing services like databases, caches, etc.

Features
- Status endpoint -- JSON response with the health of all backing services
- Human-friendly dashboard -- HTML dashboard at
/watchman/dashboard/ - Built-in checks -- Databases, caches, storage, and email out of the box
- Custom checks -- Write your own checks and plug them in
- Token-based authentication -- Protect the endpoint with configurable tokens
- Management command -- Run checks from the CLI via
python manage.py watchman - Ping endpoint -- Lightweight
/watchman/ping/endpoint returningpong - Bare status view -- Minimal HTTP 200/500 response for load balancers
- APM integration -- Suppress tracing for health check endpoints (Datadog, New Relic)
Endpoints
Including watchman.urls gives you three endpoints. The bare status view is added separately in your own urls.py.
| Endpoint | Description | Auth |
|---|---|---|
/watchman/ |
JSON response with full check results | Yes |
/watchman/dashboard/ |
Human-friendly HTML dashboard | Yes |
/watchman/ping/ |
Returns pong -- no checks run, just a liveness probe |
No |
/watchman/bare/ |
Empty response, HTTP 200 or 500 -- wire up manually via watchman.views.bare_status |
No |
Built-in Checks
| Check | Module path | Default | Description |
|---|---|---|---|
| Databases | watchman.checks.databases |
Yes | Verifies connectivity for each database in DATABASES |
| Caches | watchman.checks.caches |
Yes | Sets, gets, and deletes a test key in each cache from CACHES |
| Storage | watchman.checks.storage |
Yes | Writes, reads, and deletes a test file using default_storage |
watchman.checks.email |
No | Sends a test email -- disabled by default since it may incur costs with third-party providers |
Enable email and other paid checks with WATCHMAN_ENABLE_PAID_CHECKS = True, or customize the full list with the WATCHMAN_CHECKS setting. You can also write custom checks.
Documentation
The full documentation is at django-watchman.readthedocs.io.
Used By
django-watchman is trusted in production by organizations including:
- Mozilla -- mozilla.org, support.mozilla.org, basket, and more
- Harvard University -- LMS tools and course management
- University of Michigan -- My Learning Analytics, Remote Office Hours Queue
- UNICEF -- GeoRepo
- Caluma -- Swiss government digital forms platform
- Open Supply Hub -- Global supply chain transparency
- Azavea -- Civic technology (NYC Trees, DistrictBuilder, climate tools)
- PeopleForBikes -- Bike network connectivity analysis
- Worldcon Voting Systems -- Hugo Awards nomination and voting platform
See the full list of dependents on GitHub.
Testimonials
We're in love with django-watchman. External monitoring is a vital part of our service offering. Using django-watchman we can introspect the infrastructure of an application via a secure URL. It's very well written and easy to extend. We've recommended it to many of our clients already.
-- Hany Fahim, CEO, VM Farms.
Quickstart
Install
django-watchman:pip install django-watchmanOr with uv:
uv add django-watchmanAdd
watchmanto yourINSTALLED_APPSsetting:INSTALLED_APPS = ( ... 'watchman', )Include the watchman URLconf in your project
urls.py:re_path(r'^watchman/', include('watchman.urls')),Start the development server and visit
http://127.0.0.1:8000/watchman/to get a JSON response of your backing service statuses:{ "databases": [ { "default": { "ok": true } } ], "caches": [ { "default": { "ok": true } } ], "storage": {"ok": true} }You can also run checks from the command line:
python manage.py watchmanUse
-v 2for verbose output,-cto run specific checks, or-sto skip checks.
Configuration Highlights
| Setting | Description |
|---|---|
WATCHMAN_TOKENS |
Comma-separated tokens to protect the endpoint |
WATCHMAN_TOKEN_NAME |
Custom GET parameter name for the token (default: watchman-token) |
WATCHMAN_AUTH_DECORATOR |
Dotted path to a custom auth decorator (default: watchman.decorators.token_required) |
WATCHMAN_CHECKS |
Tuple of dotted paths to the checks to run |
WATCHMAN_ENABLE_PAID_CHECKS |
Enable paid checks like email (default: False) |
WATCHMAN_DATABASES |
Subset of DATABASES to check |
WATCHMAN_CACHES |
Subset of CACHES to check |
WATCHMAN_EXPOSE_ERROR_DETAILS |
Include exception messages and stacktraces of failed checks in responses (default: False) |
WATCHMAN_ERROR_CODE |
HTTP status code for failing checks (default: 500) |
WATCHMAN_DISABLE_APM |
Suppress APM tracing on watchman views (default: False) |
EXPOSE_WATCHMAN_VERSION |
Include X-Watchman-Version response header (default: False) |
See the full configuration documentation for details and examples.
Contributing
Contributions are welcome! Please see the contributing guide for details on how to get started.
License
BSD-3-Clause
Explore related projects
Asabeneh/30-Days-Of-Python
The 30 Days of Python programming challenge is a step-by-step guide to learn the Python programming language in 30 days. This challenge may take more than 100 days. Follow your own pace. These videos may help too: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,486 starsgrafana/grafana
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
77,790 starsredis/redis
For developers, who are building real-time data-driven applications, Redis is the preferred, fastest, and most feature-rich cache, data structure server, and document and vector query engine.
77,332 starsapache/superset
Apache Superset is a Data Visualization and Data Exploration Platform
75,455 stars