Script to start celery daemon for a given Django Application in a virtualenv
The snippet can be accessed without any authentication.
Authored by
Evili del Rio i Silvan
Edited
#!/bin/bash
#
# Start celery for Django apps in
# several django environments.
# Install in /usr/local/sbin
#
WORKER_USER=${WORKER_USER:-iritic}
WORKER_GROUP=${WORKER_GROUP:-apache}
# Pid File directory
RUN_DIR=${RUN_DIR:-/var/run/django}
# The Base Directory where all
# Django Apps reside
# here:
#{BASE_DIR}
#├── djangoappname
#│ ├── env (virtualenv directory)
#│ ├── manage.py (Django manage script)
#(...)
#
BASE_DIR=${BASE_DIR:-/var/www/wsgi}
# Option for celery worker
CELERY_OPTS=${CELERY_OPTS:-"--autoreload --autoscale=3,1 --beat"}
# Logs
LOG_DIR=${LOG_DIR:-/var/log/django}
LOG=${LOG_DIR}/${Me}_celery.log
# Django App name
Me=$1
if [[ "${USER}" = "root" ]]
then
CLRY_OPTS="${CELELRY_OPTS} --uid=${WORKER_USER} --gid=${WORKER_GROUP}"
else
CLRY_OPTS="${CELELRY_OPTS}"
fi
CLRY_OPTS="${CLRY_OPTS} --pidfile=${RUN_DIR}/${Me}.pid"
mkdir -p ${RUN_DIR}
chown ${WORKER_USER}:${WORKER_GROUP} ${RUN_DIR}
source ${BASE_DIR}/${Me}/env/bin/activate
cd ${BASE_DIR}/${Me}
${VIRTUAL_ENV}/bin/python manage.py celery worker ${CLRY_OPTS} \
-n ${Me}@$(hostname) --logfile=${LOG} >> ${LOG} 2>&1 &
deactivate
Please register or sign in to comment