Created
June 11, 2016 11:47
-
-
Save daleobrien/6a68fc6ed891034783e46bbdfe56460f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh -e | |
# ============================================ | |
# celeryd - Starts the Celery worker daemon. | |
# ============================================ | |
# | |
# :Usage: /etc/init.d/celeryd {start|stop|force-reload|restart|try-restart|status} | |
# :Configuration file: /etc/default/celeryd | |
# | |
# See http://docs.celeryq.org/en/latest/cookbook/daemonizing.html#init-script-celeryd | |
### BEGIN INIT INFO | |
# Provides: celeryd | |
# Required-Start: $network $local_fs $remote_fs | |
# Required-Stop: $network $local_fs $remote_fs | |
# Default-Start: 2 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Short-Description: celery task worker daemon | |
### END INIT INFO | |
#set -e | |
DEFAULT_PID_FILE="/var/run/celeryd@%n.pid" | |
DEFAULT_LOG_FILE="/var/log/celeryd@%n.log" | |
DEFAULT_LOG_LEVEL="INFO" | |
DEFAULT_NODES="celery" | |
DEFAULT_CELERYD="-m celery.bin.celeryd_detach" | |
# /etc/init.d/celeryd: start and stop the celery task worker daemon. | |
CELERY_DEFAULTS=${CELERY_DEFAULTS:-"/etc/default/celeryd"} | |
test -f "$CELERY_DEFAULTS" && . "$CELERY_DEFAULTS" | |
if [ -f "/etc/default/celeryd" ]; then | |
. /etc/default/celeryd | |
fi | |
CELERYD_PID_FILE=${CELERYD_PID_FILE:-${CELERYD_PIDFILE:-$DEFAULT_PID_FILE}} | |
CELERYD_LOG_FILE=${CELERYD_LOG_FILE:-${CELERYD_LOGFILE:-$DEFAULT_LOG_FILE}} | |
CELERYD_LOG_LEVEL=${CELERYD_LOG_LEVEL:-${CELERYD_LOGLEVEL:-$DEFAULT_LOG_LEVEL}} | |
CELERYD_MULTI=${CELERYD_MULTI:-"celeryd-multi"} | |
CELERYD=${CELERYD:-$DEFAULT_CELERYD} | |
CELERYCTL=${CELERYCTL:="celeryctl"} | |
CELERYD_NODES=${CELERYD_NODES:-$DEFAULT_NODES} | |
export CELERY_LOADER | |
if [ -n "$2" ]; then | |
CELERYD_OPTS="$CELERYD_OPTS $2" | |
fi | |
CELERYD_LOG_DIR=`dirname $CELERYD_LOG_FILE` | |
CELERYD_PID_DIR=`dirname $CELERYD_PID_FILE` | |
if [ ! -d "$CELERYD_LOG_DIR" ]; then | |
mkdir -p $CELERYD_LOG_DIR | |
fi | |
if [ ! -d "$CELERYD_PID_DIR" ]; then | |
mkdir -p $CELERYD_PID_DIR | |
fi | |
# Extra start-stop-daemon options, like user/group. | |
if [ -n "$CELERYD_USER" ]; then | |
DAEMON_OPTS="$DAEMON_OPTS --uid=$CELERYD_USER" | |
chown "$CELERYD_USER" $CELERYD_LOG_DIR $CELERYD_PID_DIR | |
fi | |
if [ -n "$CELERYD_GROUP" ]; then | |
DAEMON_OPTS="$DAEMON_OPTS --gid=$CELERYD_GROUP" | |
chgrp "$CELERYD_GROUP" $CELERYD_LOG_DIR $CELERYD_PID_DIR | |
fi | |
if [ -n "$CELERYD_CHDIR" ]; then | |
DAEMON_OPTS="$DAEMON_OPTS --workdir=\"$CELERYD_CHDIR\"" | |
fi | |
check_dev_null() { | |
if [ ! -c /dev/null ]; then | |
echo "/dev/null is not a character device!" | |
exit 1 | |
fi | |
} | |
ensure_dir() { | |
if [ -d "$1" ]; then | |
mkdir -p "$1" | |
chown $CELERYD_USER:$CELERYD_GROUP "$1" | |
chmod 02755 "$1" | |
fi | |
} | |
check_paths() { | |
ensure_dir "$(dirname $CELERYD_PID_FILE)" | |
ensure_dir "$(dirname $CELERYD_LOG_FILE)" | |
cd $CELERYD_CHDIR | |
} | |
export PATH="${PATH:+$PATH:}/usr/sbin:/sbin" | |
stop_workers () { | |
$CELERYD_MULTI stop $CELERYD_NODES --pidfile="$CELERYD_PID_FILE" | |
} | |
start_workers () { | |
$CELERYD_MULTI start $CELERYD_NODES $DAEMON_OPTS \ | |
--pidfile="$CELERYD_PID_FILE" \ | |
--logfile="$CELERYD_LOG_FILE" \ | |
--loglevel="$CELERYD_LOG_LEVEL" \ | |
--cmd="$CELERYD" \ | |
$CELERYD_OPTS | |
} | |
restart_workers () { | |
$CELERYD_MULTI restart $CELERYD_NODES $DAEMON_OPTS \ | |
--pidfile="$CELERYD_PID_FILE" \ | |
--logfile="$CELERYD_LOG_FILE" \ | |
--loglevel="$CELERYD_LOG_LEVEL" \ | |
--cmd="$CELERYD" \ | |
$CELERYD_OPTS | |
} | |
case "$1" in | |
start) | |
check_dev_null | |
check_paths | |
start_workers | |
;; | |
stop) | |
check_dev_null | |
check_paths | |
stop_workers | |
;; | |
reload|force-reload) | |
echo "Use restart" | |
;; | |
status) | |
$CELERYCTL status $CELERYCTL_OPTS | |
;; | |
restart) | |
check_dev_null | |
check_paths | |
restart_workers | |
;; | |
try-restart) | |
check_dev_null | |
check_paths | |
restart_workers | |
;; | |
*) | |
echo "Usage: /etc/init.d/celeryd {start|stop|restart|try-restart|kill}" | |
exit 1 | |
;; | |
esac | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment