Created
March 20, 2015 09:11
-
-
Save lemoonbox/6ec353160c13b46d6586 to your computer and use it in GitHub Desktop.
/etc/init/celeryd
This file contains 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)" | |
} | |
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