Version: | 1.0.1 |
---|---|
Web: | https://django-celery-monitor.readthedocs.io/ |
Download: | https://pypi.python.org/pypi/django_celery_monitor |
Source: | https://github.com/jezdez/django-celery-monitor |
Keywords: | django, celery, events, monitoring |
This extension enables you to monitor Celery tasks and workers.
It defines two models (django_celery_monitor.models.WorkerState
and
django_celery_monitor.models.TaskState
) used to store worker and task states
and you can query this database table like any other Django model.
It provides a Camera class (django_celery_monitor.camera.Camera
) to be
used with the Celery events command line tool to automatically populate the
two models with the current state of the Celery workers and tasks.
This package is a Celery 4 compatible port of the Django admin based monitoring feature that was included in the old django-celery package which is only compatible with Celery < 4.0. Other parts of django-celery were released as django-celery-beat (Database-backed Periodic Tasks) and django-celery-results (Celery result backends for Django).
You can install django-celery-monitor either via the Python Package Index (PyPI) or from source.
To install using pip,:
$ pip install -U django-celery-monitor
To use this with your project you need to follow these steps:
Install the django_celery_monitor library:
$ pip install django_celery_monitor
Add
django_celery_monitor
toINSTALLED_APPS
in your Django project'ssettings.py
:INSTALLED_APPS = ( ..., 'django_celery_monitor', )
Note that there is no dash in the module name, only underscores.
Create the Celery database tables by performing a database migrations:
$ python manage.py migrate django_celery_monitor
To enable taking snapshots of the current state of tasks and workers you'll
want to run the Celery events command with the appropriate camera class
django_celery_monitor.camera.Camera
:
$ celery -A proj events -l info --camera django_celery_monitor.camera.Camera --frequency=2.0
For a complete listing of the command-line options available see:
$ celery events --help
There are a few settings that regulate how long the task monitor should keep
state entries in the database. Either of the three should be a
datetime.timedelta
value or None
.
monitor_task_success_expires
-- Defaults totimedelta(days=1)
(1 day)The period of time to retain monitoring information about tasks with a
SUCCESS
result.monitor_task_error_expires
-- Defaults totimedelta(days=3)
(3 days)The period of time to retain monitoring information about tasks with an errornous result (one of the following event states:
RETRY
,FAILURE
,REVOKED
.monitor_task_pending_expires
-- Defaults totimedelta(days=5)
(5 days)The period of time to retain monitoring information about tasks with a pending result (one of the following event states:
PENDING
,RECEIVED
,STARTED
,REJECTED
,RETRY
.
In your Celery configuration simply set them to override the defaults, e.g.:
from datetime import timedelta monitor_task_success_expires = timedelta(days=7)