Celery plugin thats adds ability to graceful stop worker
[Celery](http://celeryproject.org) plugin provides ability of graceful worker stopping.
# Problem Production deployment of long running tasks require worker to be stopped gracefully. Unfortunately celery got different behaviour:
- Receiving SIGTERM signal by celery results starting Warm shutdown procedure. Due this procedure, inspect and control commands become unavailable.
- More than that, all tasks are terminated forcely by the second SIGTERM with the Cold shutdown procedure.
This module provides more consistent approach to this problem, it
- overrides SIGTERM receiver to prevent default Warm shutdown and Cold shutdown worker behaviour,
- forces inspect and control commands to be working even after SIGTERM signal received.
# Installation & Setup
` pip install git+https://github.com/MnogoByte/celery-graceful-stop.git `
Append your proj/celery.py file containg app instance with the following lines.
`python import celery_graceful_stop celery_graceful_stop.register(app) `
- CELERY_GRACEFUL_STOP (boolean). Controls graceful stop function. (True by default)
# Using with systemd
- Define 1 service per each worker you got (systemd require only one master pid for restart).
- Provide /etc/conf.d/celery_<service_name> configuration file for each worker.
- Add [celery@.service](systemd/celery@.service) file into your system.
- Register your service with systemctl enable celery@<service_name>.
- This module disables pool_shrink, pool_grow, autoscale, pool_reload, add_consumer, cancel_consumer control commands after receiving SIGTERM signal. Actually, you’ll does not need to call them when the worker is shutting down, because worker will not starts new tasks.
- This module has been tested only with celery 3.1 with pool=prefork.
BSD - 3