/celery-starter

Django command to run celery (worker, beat, flower) with automatically reboot server after changing files

Primary LanguagePythonMIT LicenseMIT

Django command to run celery (worker, beat, flower) with automatically reboot server after changing files

Project Status
CI/CD Latest Release
Quality Coverage
Package PyPI - Version PyPI - Support Python Versions Project PyPI - Downloads
Meta types - Mypy License - MIT code style - Ruff

Benefits of using this cli

  1. The ability to run up to three servers (worker, beat, flower) simultaneously in one terminal, instead of running by default in three different terminals.
  2. Automatic reboot of these servers when your codebase changes.

Install

  1. Install package

    pip install celery-starter
  2. Add app name to INSTALLED_APPS

    INSTALLED_APPS = [
        'celery_starter',
    ]

Command to run the program:

python manage.py runcelery

Arguments can be passed in any order, it doesn't matter.

Optional Arguments:

-h or --help Show help message.
-w <cmd> or --worker <cmd> Full command line to run worker or options that extend the default command line.
-b <cmd> or --beat <cmd> Full command line to run beat or options that extend the default command line.
-f <cmd> or --flower <cmd> Full command line to run flower or options that extend the default command line.
-eb or --exclude_beat Excludes the beat server at startup.
-ef or --exclude_flower Excludes the flower server at startup.
-d or --debug Displays information about successful/unsuccessful completion of processes.

To stopped program pressing the keyboard shortcut CTRL+C

Examples of Commands

default commands:

# worker cmd
# (WARNING) Note that the default pool is solo,
# because of this, all tasks will be performed sequentially,
# to get parallelism, install one of the libraries [gevent | eventlet]
# and redefine the default pool in cmd.
celery -A <CELERY_APP> worker -E -l INFO -P solo

# beat cmd
celery -A <CELERY_APP> beat --pidfile=celerybeat.pid -l INFO

# flower cmd
celery --broker=redis://localhost:6379// flower -A <CELERY_APP> --url_prefix=flower

valid commands:

# redefining the -A and -P parameter
# and adding a new --broker parameter to the default worker command
python manage.py runcelery -w "-A <CELERY_APP> -P gevent --broker=redis://localhost:6379//"

# complete replacement of the default worker command with the passed command
python manage.py runcelery -w "celery -A <CELERY_APP> worker"

Working with beat and flower commands works in a similar way.

Contributing

We would love you to contribute to celery-starter, pull requests are very welcome! Please see CONTRIBUTING.md for more information.