File: celerybeat

package info (click to toggle)
celery 2.5.3-4
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 3,912 kB
  • sloc: python: 24,645; sh: 1,050; makefile: 98
file content (166 lines) | stat: -rwxr-xr-x 4,267 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#!/bin/bash
# =========================================================
#  celerybeat - Starts the Celery periodic task scheduler.
# =========================================================
#
# :Usage: /etc/init.d/celerybeat {start|stop|force-reload|restart|try-restart|status}
# :Configuration file: /etc/default/celerybeat or /etc/default/celeryd
#
# See http://docs.celeryq.org/en/latest/cookbook/daemonizing.html#init-script-celerybeat

### BEGIN INIT INFO
# Provides:          celerybeat
# 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 periodic task scheduler
# Description:       Starts the Celery periodic task scheduler.
### END INIT INFO

# Cannot use set -e/bash -e since the kill -0 command will abort
# abnormally in the absence of a valid process ID.
#set -e

DEFAULT_PID_FILE="/var/run/celerybeat.pid"
DEFAULT_LOG_FILE="/var/log/celerybeat.log"
DEFAULT_LOG_LEVEL="INFO"
DEFAULT_CELERYBEAT="celerybeat"
ENABLED="false"

[ -r /etc/default/celeryd ] && . /etc/default/celeryd

[ -r /etc/default/celerybeat ] && . /etc/default/celerybeat

if [ "$ENABLED" != "true" ]; then
    echo "celerybeat daemon disabled - read /etc/default/celeryd."
    exit 0
fi

CELERYBEAT=${CELERYBEAT:-$DEFAULT_CELERYBEAT}
CELERYBEAT_PID_FILE=${CELERYBEAT_PID_FILE:-${CELERYBEAT_PIDFILE:-$DEFAULT_PID_FILE}}
CELERYBEAT_LOG_FILE=${CELERYBEAT_LOG_FILE:-${CELERYBEAT_LOGFILE:-$DEFAULT_LOG_FILE}}
CELERYBEAT_LOG_LEVEL=${CELERYBEAT_LOG_LEVEL:-${CELERYBEAT_LOGLEVEL:-$DEFAULT_LOG_LEVEL}}

export CELERY_LOADER

CELERYBEAT_OPTS="$CELERYBEAT_OPTS -f $CELERYBEAT_LOG_FILE -l $CELERYBEAT_LOG_LEVEL"

if [ -n "$2" ]; then
    CELERYBEAT_OPTS="$CELERYBEAT_OPTS $2"
fi

CELERYBEAT_LOG_DIR=`dirname $CELERYBEAT_LOG_FILE`
CELERYBEAT_PID_DIR=`dirname $CELERYBEAT_PID_FILE`
if [ ! -d "$CELERYBEAT_LOG_DIR" ]; then
    mkdir -p $CELERYBEAT_LOG_DIR
fi
if [ ! -d "$CELERYBEAT_PID_DIR" ]; then
    mkdir -p $CELERYBEAT_PID_DIR
fi

# Extra start-stop-daemon options, like user/group.
if [ -n "$CELERYBEAT_USER" ]; then
    DAEMON_OPTS="$DAEMON_OPTS --uid $CELERYBEAT_USER"
    chown "$CELERYBEAT_USER" $CELERYBEAT_LOG_DIR $CELERYBEAT_PID_DIR
fi
if [ -n "$CELERYBEAT_GROUP" ]; then
    DAEMON_OPTS="$DAEMON_OPTS --gid $CELERYBEAT_GROUP"
    chgrp "$CELERYBEAT_GROUP" $CELERYBEAT_LOG_DIR $CELERYBEAT_PID_DIR
fi

CELERYBEAT_CHDIR=${CELERYBEAT_CHDIR:-$CELERYD_CHDIR}
if [ -n "$CELERYBEAT_CHDIR" ]; then
    DAEMON_OPTS="$DAEMON_OPTS --workdir $CELERYBEAT_CHDIR"
fi


export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"

check_dev_null() {
    if [ ! -c /dev/null ]; then
        echo "/dev/null is not a character device!"
        exit 1
    fi
}

wait_pid () {
    pid=$1
    forever=1
    i=0
    while [ $forever -gt 0 ]; do
        kill -0 $pid 1>/dev/null 2>&1
        if [ $? -eq 1 ]; then
            echo "OK"
            forever=0
        else
            kill -TERM "$pid"
            i=$((i + 1))
            if [ $i -gt 60 ]; then
                echo "ERROR"
                echo "Timed out while stopping (30s)"
                forever=0
            else
                sleep 0.5
            fi
        fi
    done
}


stop_beat () {
    echo -n "Stopping celerybeat... "
    if [ -f "$CELERYBEAT_PID_FILE" ]; then
        wait_pid $(cat "$CELERYBEAT_PID_FILE")
    else
        echo "NOT RUNNING"
    fi
}

start_beat () {
    echo "Starting celerybeat..."
    if [ -n "$VIRTUALENV" ]; then
        source $VIRTUALENV/bin/activate
    fi
    $CELERYBEAT $CELERYBEAT_OPTS $DAEMON_OPTS --detach \
                --pidfile="$CELERYBEAT_PID_FILE"
}

status () {
    pid=$(cat "$CELERYBEAT_PID_FILE")
    kill -0 $pid 1>/dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "celerybeat running"
    else
        echo "celerybeat not running"
        exit 1
    fi
}

case "$1" in
  start)
    check_dev_null
    start_beat
    ;;
  stop)
    stop_beat
    ;;
  reload|force-reload)
    echo "Use start+stop"
    ;;
  restart)
    echo "Restarting celery periodic task scheduler"
    stop_beat
    check_dev_null
    start_beat
    ;;
  status)
    status
    ;;

  *)
    echo "Usage: /etc/init.d/celerybeat {start|stop|restart|status}"
    exit 1
esac

exit 0