{ "info": { "author": "GoTLiuM InSPiRiT", "author_email": "gotlium@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License (GPL)", "Operating System :: OS Independent", "Programming Language :: Python" ], "description": "Django-Celery-Monitor\r\n=====================\r\n\r\n.. image:: https://api.travis-ci.org/LPgenerator/django-celery-mon.png?branch=master\r\n :alt: Build Status\r\n :target: https://travis-ci.org/LPgenerator/django-celery-mon\r\n.. image:: https://pypip.in/v/django-celery-mon/badge.png\r\n :alt: Current version on PyPi\r\n :target: https://crate.io/packages/django-celery-mon/\r\n.. image:: https://pypip.in/d/django-celery-mon/badge.png\r\n :alt: Downloads from PyPi\r\n :target: https://crate.io/packages/django-celery-mon/\r\n\r\n\r\nWhat's that\r\n-----------\r\nSimple app for monitoring Celery workers. If worker was die, supervisor process will be restarted.\r\n\r\n\r\nInstallation\r\n------------\r\n\r\n1. Using pip\r\n\r\n.. code-block:: bash\r\n\r\n $ pip install django-celery-mon\r\n\r\n2. Add the ``celerymon`` application to ``INSTALLED_APPS`` in your settings file (usually ``settings.py``)\r\n3. Configure your celery settings. For example:\r\n\r\n.. code-block:: python\r\n\r\n CELERY_DEFAULT_QUEUE = 'default'\r\n BROKER_URL = 'redis://localhost:6379/0'\r\n CELERY_SEND_EVENTS = True\r\n CELERY_TASK_RESULT_EXPIRES = 10\r\n CELERY_IGNORE_RESULT = True\r\n CELERY_TASK_SERIALIZER = 'pickle'\r\n CELERY_ACKS_LATE = True\r\n CELERY_DISABLE_RATE_LIMITS = True\r\n CELERY_DEFAULT_QUEUE = 'default'\r\n CELERY_RESULT_BACKEND = BROKER_URL\r\n\r\n CELERYBEAT_SCHEDULER = \"djcelery.schedulers.DatabaseScheduler\"\r\n CELERYD_PREFETCH_MULTIPLIER = 4\r\n\r\n CELERY_QUEUES = {\r\n 'default': {\"exchange\": \"default\"},\r\n 'mail': {\"exchange\": \"mail\"},\r\n }\r\n\r\n4. Configure CeleryMon:\r\n\r\n.. code-block:: python\r\n\r\n CELERY_MON_CELERY_WORKERS = ['default', 'mail']\r\n CELERY_MON_NOTIFICATION_ENABLED = True\r\n CELERY_MON_NOTIFICATION_EMAILS = ['root@local.host']\r\n\r\n5. Configure supervisor (name of program should be equal into celery worker):\r\n\r\n.. code-block:: bash\r\n\r\n [program:default]\r\n command=./manage.py celeryd -Q default -n default\r\n directory=/home/example.com/www\r\n stdout_logfile=/var/log/celery/default_worker.log\r\n stderr_logfile=/var/log/celery/default_worker.err.log\r\n\r\n [program:mail]\r\n command=./manage.py celeryd -Q mail -n mail\r\n directory=/home/example.com/www\r\n stdout_logfile=/var/log/celery/mail_worker.log\r\n stderr_logfile=/var/log/celery/mail_worker.err.log\r\n\r\n6. Run Celery, Redis, Supervisor\r\n\r\n.. code-block:: bash\r\n\r\n $ service redis restart\r\n $ service supervisor restart\r\n\r\n7. Add to crontab\r\n\r\n SHELL=/bin/bash\r\n PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games\r\n MAILTO=root@local.host\r\n PYTHON_BIN=/home/example.com/venv/bin/python\r\n MANAGE_PY=/home/lpgenerator.ru/www/manage.py\r\n LOGS_DIR=/var/log/celery\r\n \r\n */5 * * * * flock -n /dev/shm/celery_state.lock -c \"$PYTHON_BIN $MANAGE_PY check_celery_state >> $LOGS_DIR/monitor.log\"\r\n\r\n\r\nUsage examples\r\n--------------\r\n\r\n.. code-block:: bash\r\n\r\n ./manage.py check_celery_state\r\n\r\n\r\nLocal demo installation\r\n-----------------------\r\n\r\n.. code-block:: bash\r\n\r\n $ sudo apt-get install virtualenvwrapper supervisor git-core\r\n $ mkvirtualenv django-celery-mon\r\n $ git clone https://github.com/LPgenerator/django-celery-mon.git\r\n $ cd django-celery-mon\r\n $ python setup.py develop\r\n $ pip install -r requirements/package.txt\r\n $ pip install -r requirements/tests.txt\r\n $ cd demo\r\n $ python manage.py syncdb --noinput\r\n $ cp supervisor/worker.conf /etc/supervisor/conf.d/\r\n $ sed -i \"s'./manage.py'`which python` `pwd`/manage.py'g\" /etc/supervisor/conf.d/worker.conf\r\n $ sed -i \"s'/home/example.com/www'`pwd`'g\" /etc/supervisor/conf.d/worker.conf\r\n $ /etc/init.d/supervisor stop; /etc/init.d/supervisor start\r\n $ supervisorctl -c /etc/supervisor/supervisord.conf status\r\n $ python manage.py check_celery_state\r\n # not you can stop some queue, check state and stop it, for checking by monitor\r\n $ supervisorctl -c /etc/supervisor/supervisord.conf stop mail\r\n $ supervisorctl -c /etc/supervisor/supervisord.conf status\r\n $ python manage.py check_celery_state\r\n $ supervisorctl -c /etc/supervisor/supervisord.conf status\r\n\r\n\r\n\r\nCompatibility\r\n-------------\r\n* Python: 2.6, 2.7\r\n* Django: 1.4, 1.5, 1.6", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/LPgenerator/django-celery-mon/", "keywords": "django celery monitoring", "license": "UNKNOWN", "maintainer": "", "maintainer_email": "", "name": "django-celery-mon", "package_url": "https://pypi.org/project/django-celery-mon/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-celery-mon/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/LPgenerator/django-celery-mon/" }, "release_url": "https://pypi.org/project/django-celery-mon/1.0/", "requires_dist": null, "requires_python": null, "summary": "App for monitoring Celery workers", "version": "1.0" }, "last_serial": 1216871, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "23766e1364760f7e1b30d9badbf9f107", "sha256": "47caa88c8f441a126d9a27a8688aaff060930090586b06f2b820c0748ae00633" }, "downloads": -1, "filename": "django_celery_mon-1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "23766e1364760f7e1b30d9badbf9f107", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8731, "upload_time": "2014-08-29T10:52:24", "url": "https://files.pythonhosted.org/packages/ed/00/586afb578bbbdec244dc31ccfd469a0032f21c05c6bf062589f69a5e9efe/django_celery_mon-1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f78d0a888804672e1a6565cc0f6ebd06", "sha256": "c6f376584c669182552b081519cb66db7a9189c872f81c6a62365fe9d8a97fda" }, "downloads": -1, "filename": "django-celery-mon-1.0.tar.gz", "has_sig": true, "md5_digest": "f78d0a888804672e1a6565cc0f6ebd06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12530, "upload_time": "2014-08-29T10:52:20", "url": "https://files.pythonhosted.org/packages/f8/65/117cbfe4ebd48e209103f769e0db1e0078d041adfcf21923abfb0b7ac523/django-celery-mon-1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "23766e1364760f7e1b30d9badbf9f107", "sha256": "47caa88c8f441a126d9a27a8688aaff060930090586b06f2b820c0748ae00633" }, "downloads": -1, "filename": "django_celery_mon-1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "23766e1364760f7e1b30d9badbf9f107", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8731, "upload_time": "2014-08-29T10:52:24", "url": "https://files.pythonhosted.org/packages/ed/00/586afb578bbbdec244dc31ccfd469a0032f21c05c6bf062589f69a5e9efe/django_celery_mon-1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f78d0a888804672e1a6565cc0f6ebd06", "sha256": "c6f376584c669182552b081519cb66db7a9189c872f81c6a62365fe9d8a97fda" }, "downloads": -1, "filename": "django-celery-mon-1.0.tar.gz", "has_sig": true, "md5_digest": "f78d0a888804672e1a6565cc0f6ebd06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12530, "upload_time": "2014-08-29T10:52:20", "url": "https://files.pythonhosted.org/packages/f8/65/117cbfe4ebd48e209103f769e0db1e0078d041adfcf21923abfb0b7ac523/django-celery-mon-1.0.tar.gz" } ] }