Package: django-celery-mon
Django-Celery-Monitor=====================.. image:: https://api.travis-ci.org/LPgenerator/django-celery-mon.png?branch=master:alt: Build Status:target: https://travis-ci.org/LPgenerator/django-celery-mon.. image:: https://pypip.in/v/django-celery-mon/badge.png:alt: Current version on PyPi:target: https://crate.io/packages/django-celery-mon/.. image:: https://pypip.in/d/django-celery-mon/badge.png:alt: Downloads from PyPi:target: https://crate.io/packages/django-celery-mon/What's that-----------Simple app for monitoring Celery workers. If worker was die, supervisor process will be restarted.Installation------------1. Using pip.. code-block:: bash$ pip install django-celery-mon2. Add the ``celerymon`` application to ``INSTALLED_APPS`` in your settings file (usually ``settings.py``)3. Configure your celery settings. For example:.. code-block:: pythonCELERY_DEFAULT_QUEUE = 'default'BROKER_URL = 'redis://localhost:6379/0'CELERY_SEND_EVENTS = TrueCELERY_TASK_RESULT_EXPIRES = 10CELERY_IGNORE_RESULT = TrueCELERY_TASK_SERIALIZER = 'pickle'CELERY_ACKS_LATE = TrueCELERY_DISABLE_RATE_LIMITS = TrueCELERY_DEFAULT_QUEUE = 'default'CELERY_RESULT_BACKEND = BROKER_URLCELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"CELERYD_PREFETCH_MULTIPLIER = 4CELERY_QUEUES = {'default': {"exchange": "default"},'mail': {"exchange": "mail"},}4. Configure CeleryMon:.. code-block:: pythonCELERY_MON_CELERY_WORKERS = ['default', 'mail']CELERY_MON_NOTIFICATION_ENABLED = TrueCELERY_MON_NOTIFICATION_EMAILS = ['root@local.host']5. Configure supervisor (name of program should be equal into celery worker):.. code-block:: bash[program:default]command=./manage.py celeryd -Q default -n defaultdirectory=/home/example.com/wwwstdout_logfile=/var/log/celery/default_worker.logstderr_logfile=/var/log/celery/default_worker.err.log[program:mail]command=./manage.py celeryd -Q mail -n maildirectory=/home/example.com/wwwstdout_logfile=/var/log/celery/mail_worker.logstderr_logfile=/var/log/celery/mail_worker.err.log6. Run Celery, Redis, Supervisor.. code-block:: bash$ service redis restart$ service supervisor restart7. Add to crontabSHELL=/bin/bashPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/gamesMAILTO=root@local.hostPYTHON_BIN=/home/example.com/venv/bin/pythonMANAGE_PY=/home/lpgenerator.ru/www/manage.pyLOGS_DIR=/var/log/celery*/5 * * * * flock -n /dev/shm/celery_state.lock -c "$PYTHON_BIN $MANAGE_PY check_celery_state >> $LOGS_DIR/monitor.log"Usage examples--------------.. code-block:: bash./manage.py check_celery_stateLocal demo installation-----------------------.. code-block:: bash$ sudo apt-get install virtualenvwrapper supervisor git-core$ mkvirtualenv django-celery-mon$ git clone https://github.com/LPgenerator/django-celery-mon.git$ cd django-celery-mon$ python setup.py develop$ pip install -r requirements/package.txt$ pip install -r requirements/tests.txt$ cd demo$ python manage.py syncdb --noinput$ cp supervisor/worker.conf /etc/supervisor/conf.d/$ sed -i "s'./manage.py'`which python` `pwd`/manage.py'g" /etc/supervisor/conf.d/worker.conf$ sed -i "s'/home/example.com/www'`pwd`'g" /etc/supervisor/conf.d/worker.conf$ /etc/init.d/supervisor stop; /etc/init.d/supervisor start$ supervisorctl -c /etc/supervisor/supervisord.conf status$ python manage.py check_celery_state# not you can stop some queue, check state and stop it, for checking by monitor$ supervisorctl -c /etc/supervisor/supervisord.conf stop mail$ supervisorctl -c /etc/supervisor/supervisord.conf status$ python manage.py check_celery_state$ supervisorctl -c /etc/supervisor/supervisord.conf statusCompatibility-------------* Python: 2.6, 2.7* Django: 1.4, 1.5, 1.6