diff options
author | Corentin Chary <iksaif@gentoo.org> | 2012-05-30 06:45:54 +0000 |
---|---|---|
committer | Corentin Chary <iksaif@gentoo.org> | 2012-05-30 06:45:54 +0000 |
commit | 89b032d8b3996d60b8138018bff393cf075824d0 (patch) | |
tree | 0c9998d01990ec4971c22558632568dd0baff179 /dev-python/celery/files | |
parent | New ebuild for cl. (diff) | |
download | historical-89b032d8b3996d60b8138018bff393cf075824d0.tar.gz historical-89b032d8b3996d60b8138018bff393cf075824d0.tar.bz2 historical-89b032d8b3996d60b8138018bff393cf075824d0.zip |
New ebuild for celery. Closes bug #342041.
Package-Manager: portage-2.1.10.63/cvs/Linux x86_64
Diffstat (limited to 'dev-python/celery/files')
-rw-r--r-- | dev-python/celery/files/celery.confd | 66 | ||||
-rw-r--r-- | dev-python/celery/files/celery.initd | 279 |
2 files changed, 345 insertions, 0 deletions
diff --git a/dev-python/celery/files/celery.confd b/dev-python/celery/files/celery.confd new file mode 100644 index 000000000000..6c34927cbd31 --- /dev/null +++ b/dev-python/celery/files/celery.confd @@ -0,0 +1,66 @@ +# /etc/conf.d/celery + +############################################################################## +# GLOBAL CONFIGURATION + +# User and group +#CELERY_USER="celery" +#CELERY_GROUP="celery" + +# Is this for a django project ? +# If 'yes' it will automatically setup CELERYD, CELERYCTL +# CELERYD_MULTI, CELERYBEAT, CELERYEV and CELERYEV_CAM for a +# django project, but you can still override them here. +#CELERY_DJANGO="yes" + +# Full path to the python project directory. +#CELERY_PROJDIR="/var/lib/myproject" + +############################################################################## +# CELERYD + +#CELERYD_ENABLED="yes" + +# celeryd notes +#CELERYD_NODES="celery" + +# celeryd options +# Example: 5 minute hard time limit for tasks +#CELERYD_OPTS="--time-limit=300" + +# Location and level of the celeryd log file +#CELERYD_LOG_FILE=/var/log/celery/celeryd@%n.log +#CELERYD_LOG_LEVEL="INFO" + +# Location of the celeryd pid file +#CELERYD_PID_FILE=/var/run/celery/celeryd@%n.pid + +############################################################################## +# CELERYBEAT + +#CELERYBEAT_ENABLED="yes" + +# celerybeat options +#CELERYBEAT_OPTS="" + +# Location and level of the celerybeat log file +#CELERYBEAT_LOG_FILE=/var/log/celery/celerybeat.log +#CELERYBEAT_LOG_LEVEL="INFO" + +# Location of the celerybeat pid file +#CELERYBEAT_PID_FILE=/var/run/celery/celerybeat.pid + +############################################################################## +# CELERYEV + +#CELERYEV_ENABLED="yes" + +# celeryev options +#CELERYEV_OPTS="" + +# Location and level of the celeryev log file +#CELERYEV_LOG_FILE=/var/log/celery/celeryev.log +#CELERYEV_LOG_LEVEL="INFO" + +# Location of the celeryev pid file +#CELERYEV_PID_FILE=/var/run/celery/celeryev.pid diff --git a/dev-python/celery/files/celery.initd b/dev-python/celery/files/celery.initd new file mode 100644 index 000000000000..16de8ea294be --- /dev/null +++ b/dev-python/celery/files/celery.initd @@ -0,0 +1,279 @@ +#!/sbin/runscript +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-python/celery/files/celery.initd,v 1.1 2012/05/30 06:45:54 iksaif Exp $ + +extra_started_commands="reload" + +depend() { + need net + use rabbitmq logger dns +} + +CELERYD_ENABLED=${CELERYD_ENABLED:-"no"} +CELERYD_PID_FILE=${CELERYD_PID_FILE:-"/var/run/celery/celeryd@%n.pid"} +CELERYD_LOG_FILE=${CELERYD_LOG_FILE:-"/var/log/celery/celeryd@%n.log"} +CELERYD_LOG_LEVEL=${CELERYD_LOG_LEVEL:-"INFO"} +CELERYD_NODES=${CELERYD_NODES:-"celery"} + +CELERYBEAT_ENABLED=${CELERYBEAT_ENABLED:-"no"} +CELERYBEAT_PID_FILE=${CELERYBEAT_PID_FILE:-"/var/run/celery/celerybeat.pid"} +CELERYBEAT_LOG_FILE=${CELERYBEAT_LOG_FILE:-"/var/log/celery/celerybeat.log"} +CELERYBEAT_LOG_LEVEL=${CELERYBEAT_LOG_LEVEL:-"INFO"} + +CELERYEV_ENABLED=${CELERYEV_ENABLED:-"no"} +CELERYEV_PID_FILE=${CELERYEV_PID_FILE:-"/var/run/celery/celeryev.pid"} +CELERYEV_LOG_FILE=${CELERYEV_LOG_FILE:-"/var/log/celery/celeryev.log"} +CELERYEV_LOG_LEVEL=${CELERYEV_LOG_LEVEL:-"INFO"} + +export CELERY_LOADER + +if yesno "$CELERY_DJANGO"; then + CELERYD=${CELERYD:-"celeryd_detach"} + CELERYCTL=${CELERYCTL:-"python manage.py celeryd"} + CELERYD_MULTI=${CELERYD_MULTI:-"python manage.py celeryd_multi"} + CELERYBEAT=${CELERYBEAT:-"python manage.py celerybeat"} + CELERYEV=${CELERYEV:-"python manage.py celeryev"} + CELERYEV_CAM=${CELERYEV_CAM:-"djcelery.snapshot.Camera"} +else + CELERYD=${CELERYD:-"-m celery.bin.celeryd_detach"} + CELERYD_MULTI=${CELERYD_MULTI:-"celeryd-multi"} + CELERYCTL=${CELERYCTL:-"celeryctl"} + CELERYBEAT=${CELERYBEAT:-"celerybeat"} + CELERYEV=${CELERYEV:-"celeryev"} +fi + +CELERYD_OPTS="$CELERYD_OPTS -f $CELERYD_LOG_FILE -l $CELERYD_LOG_LEVEL" +CELERYBEAT_OPTS="$CELERYBEAT_OPTS -f $CELERYBEAT_LOG_FILE -l $CELERYBEAT_LOG_LEVEL" +CELERYEV_OPTS="$CELERYEV_OPTS -f $CELERYEV_LOG_FILE -l $CELERYEV_LOG_LEVEL -c $CELERYEV_CAM" + +create_dirs() { + local logfile="$1" + local pidfile="$2" + local logdir=`dirname $logfile` + local piddir=`dirname $pidfile` + + if [ ! -d "$logdir" ]; then + mkdir -p $logdir + fi + if [ ! -d "$piddir" ]; then + mkdir -p $piddir + fi + + if [ -n "$CELERY_USER" ]; then + chown "$CELERY_USER" $logdir $piddir + fi + if [ -n "$CELERY_GROUP" ]; then + chown ":$CELERY_GROUP" $logdir $piddir + fi +} + +if [ -n "$CELERY_USER" ]; then + DAEMON_OPTS="$DAEMON_OPTS --uid=$CELERY_USER" +fi +if [ -n "$CELERY_GROUP" ]; then + DAEMON_OPTS="$DAEMON_OPTS --gid=$CELERY_GROUP" +fi + +checkconfig() { + if [ ! -c /dev/null ]; then + eerror "/dev/null is not a character device!" + return 1 + fi + + if [ -z "$CELERY_PROJDIR" ]; then + eerror "Missing CELERY_PROJDIR variable" + return 1 + fi + + if yesno "$CELERYD_ENABLED"; then + create_dirs "$CELERYD_LOG_FILE" "$CELERYD_PID_FILE" + fi + + if yesno "$CELERYBEAT_ENABLED"; then + create_dirs "$CELERYBEAT_LOG_FILE" "$CELERYBEAT_PID_FILE" + fi + + if yesno "$CELERYEV_ENABLED"; then + create_dirs "$CELERYEV_LOG_FILE" "$CELERYEV_PID_FILE" + + if [ -z "$CELERYEV_CAM" ]; then + eerror "Missing CELERYEV_CAM variable" + return 1 + fi + fi + + return 0 +} + +celery_chdir() { + if [ -n "$CELERY_PROJDIR" ]; then + cd "$CELERY_PROJDIR" + fi +} + +wait_pid () { + local pidfile=$1 + local timeout=${STOPTIMEOUT:-"10"} + local PID=$(cat "${pidfile}" 2>/dev/null) + + while [[ -n "$PID" && "${timeout}" -ge 1 ]] ; do + kill -0 $PID 2>/dev/null || break + kill -TERM "$PID" + timeout=$(($timeout - 1)) + sleep 0.5 + done + + [[ "${timeout}" -lt 1 ]] && return 1 + [ -f $pidfile ] && rm -f $pidfile + return 0 +} + +# celeryd +start_workers() { + yesno "${CELERYD_ENABLED}" || return 0 + + $CELERYD_MULTI start $CELERYD_NODES $DAEMON_OPTS \ + --pidfile="$CELERYD_PID_FILE" \ + --logfile="$CELERYD_LOG_FILE" \ + --loglevel="$CELERYD_LOG_LEVEL" \ + --cmd="$CELERYD" \ + $CELERYD_OPTS +} + +stop_workers() { + yesno "${CELERYD_ENABLED}" || return 0 + + local timeout=${STOPTIMEOUT:-"10"} + + $CELERYD_MULTI stop $CELERYD_NODES --pidfile="$CELERYD_PID_FILE" || return 1 + + # Wait for each node + for node in $CELERYD_NODES; do + local pidfile=${CELERYD_PID_FILE/\%n/$node} + local PID=$(cat "${pidfile}" 2>/dev/null) + while [[ -n "$PID" && "${timeout}" -ge 1 ]] ; do + kill -0 $PID 2>/dev/null || break + timeout=$(($timeout - 1)) + sleep 0.5 + done + done + + [[ "${timeout}" -lt 1 ]] && return 1 + return 0 +} + +restart_workers() { + yesno "${CELERYD_ENABLED}" || return 0 + + $CELERYD_MULTI restart $CELERYD_NODES $DAEMON_OPTS \ + --pidfile="$CELERYD_PID_FILE" \ + --logfile="$CELERYD_LOG_FILE" \ + --loglevel="$CELERYD_LOG_LEVEL" \ + --cmd="$CELERYD" \ + $CELERYD_OPTS +} + +# celeryev +start_ev() { + yesno "${CELERYEV_ENABLED}" || return 0 + + ebegin "Starting celeryev" + $CELERYEV $CELERYEV_OPTS $DAEMON_OPTS --detach \ + --pidfile="$CELERYEV_PID_FILE" + eend $? +} + + +stop_ev() { + yesno "${CELERYEV_ENABLED}" || return 0 + + ebegin "Stopping celeryev" + if [ -f "$CELERYEV_PID_FILE" ]; then + wait_pid "$CELERYEV_PID_FILE" + else + eerror "not running" + fi + eend $? +} + +# celerybeat +start_beat() { + yesno "${CELERYBEAT_ENABLED}" || return 0 + + ebegin "Starting celerybeat" + $CELERYBEAT $CELERYBEAT_OPTS $DAEMON_OPTS --detach \ + --pidfile="$CELERYBEAT_PID_FILE" + eend $? +} + + +stop_beat() { + yesno "${CELERYBEAT_ENABLED}" || return 0 + + ebegin "Stopping celerybeat" + if [ -f "$CELERYBEAT_PID_FILE" ]; then + wait_pid "$CELERYBEAT_PID_FILE" + else + eerror "not running" + fi + eend $? +} + + +start() { + local cr=0 + + checkconfig || return 1 + + ebegin "Starting ${SVCNAME}" + eindent + + celery_chdir && \ + start_workers && \ + start_beat && \ + start_ev || cr=1 + + eoutdent + eend $cr +} + +stop() { + local cr=0 + + checkconfig || return 1 + + ebegin "Stopping ${SVCNAME}" + eindent + + celery_chdir + stop_workers || cr=1 + stop_beat || cr=1 + stop_ev || cr=1 + + eoutdent + eend $cr +} + +reload() { + local cr=0 + + checkconfig || return 1 + + ebegin "Restarting ${SVCNAME}" + eindent + + celery_chdir + restart_workers || cr=1 + stop_beat && start_beat || cr=1 + stop_ev && start_ev || cr=1 + + eoutdent + eend $cr +} + +status() { + checkconfig || return 1 + + ${CELERYCTL} status +} |