[Unit] Description=MediaCMS celery short queue After=network.target [Service] Type=forking User=www-data Group=www-data Restart=always RestartSec=10 Environment=APP_DIR="/home/mediacms.io/mediacms" Environment=CELERYD_NODES="short1 short2" Environment=CELERY_QUEUE="short_tasks" # Absolute or relative path to the 'celery' command: Environment=CELERY_BIN="/home/mediacms.io/bin/celery" # App instance to use # comment out this line if you don't use an app Environment=CELERY_APP="cms" # or fully qualified: #CELERY_APP="proj.tasks:app" # How to call manage.py Environment=CELERYD_MULTI="multi" # Extra command-line arguments to the worker Environment=CELERYD_OPTS="--soft-time-limit=300 -c10" # - %n will be replaced with the first part of the nodename. # - %I will be replaced with the current child process index # and is important when using the prefork pool to avoid race conditions. Environment=CELERYD_PID_FILE="/home/mediacms.io/mediacms/pids/%n.pid" Environment=CELERYD_LOG_FILE="/home/mediacms.io/mediacms/logs/%N.log" Environment=CELERYD_LOG_LEVEL="INFO" Environment=APP_DIR="/home/mediacms.io/mediacms" ExecStart=/bin/sh -c '${CELERY_BIN} multi start ${CELERYD_NODES} -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS} --workdir=${APP_DIR} -Q ${CELERY_QUEUE}' ExecStop=/bin/sh -c '${CELERY_BIN} multi stopwait ${CELERYD_NODES} --pidfile=${CELERYD_PID_FILE}' ExecReload=/bin/sh -c '${CELERY_BIN} multi restart ${CELERYD_NODES} -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS} --workdir=${APP_DIR} -Q ${CELERY_QUEUE}' [Install] WantedBy=multi-user.target