~kelvin.li/isitdeployable/native-local-dev-env

« back to all changes in this revision

Viewing changes to dev_config/templates/celeryd.initscript.erb

  • Committer: James Westby
  • Date: 2012-02-29 22:05:02 UTC
  • Revision ID: james.westby@canonical.com-20120229220502-dm4i22kqwxsu4368
Drop in the ec2 stuff from pkgme-service.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/bash -e
 
2
# ============================================
 
3
#  celeryd - Starts the Celery worker daemon.
 
4
# ============================================
 
5
#
 
6
# :Usage: /etc/init.d/celeryd {start|stop|force-reload|restart|try-restart|status}
 
7
#
 
8
# :Configuration file: /etc/default/celeryd
 
9
#
 
10
# To configure celeryd you probably need to tell it where to chdir.
 
11
#
 
12
# EXAMPLE CONFIGURATION
 
13
# =====================
 
14
#
 
15
# this is an example configuration for a Python project:
 
16
#
 
17
# /etc/default/celeryd:
 
18
#
 
19
#   # Where to chdir at start.
 
20
#   CELERYD_CHDIR="/opt/Myproject/"
 
21
#
 
22
#   # Extra arguments to celeryd
 
23
#   CELERYD_OPTS="--time-limit=300"
 
24
#
 
25
#   # Name of the celery config module.#
 
26
#   CELERY_CONFIG_MODULE="celeryconfig"
 
27
#
 
28
# EXAMPLE DJANGO CONFIGURATION
 
29
# ============================
 
30
#
 
31
#   # Where the Django project is.
 
32
#   CELERYD_CHDIR="/opt/Project/"
 
33
#
 
34
#   # Name of the projects settings module.
 
35
#   export DJANGO_SETTINGS_MODULE="settings"
 
36
#
 
37
#   # Path to celeryd
 
38
#   CELERYD="/opt/Project/manage.py"
 
39
#
 
40
#   # Extra arguments to manage.py
 
41
#   CELERYD_OPTS="celeryd"
 
42
#
 
43
# AVAILABLE OPTIONS
 
44
# =================
 
45
#
 
46
#   * CELERYD_OPTS
 
47
#       Additional arguments to celeryd, see `celeryd --help` for a list.
 
48
#
 
49
#   * CELERYD_CHDIR
 
50
#       Path to chdir at start. Default is to stay in the current directory.
 
51
#
 
52
#   * CELERYD_PID_FILE
 
53
#       Full path to the pidfile. Default is /var/run/celeryd.pid.
 
54
#
 
55
#   * CELERYD_LOG_FILE
 
56
#       Full path to the celeryd logfile. Default is /var/log/celeryd.log
 
57
#
 
58
#   * CELERYD_LOG_LEVEL
 
59
#       Log level to use for celeryd. Default is INFO.
 
60
#
 
61
#   * CELERYD
 
62
#       Path to the celeryd program. Default is `celeryd`.
 
63
#       You can point this to an virtualenv, or even use manage.py for django.
 
64
#
 
65
#   * CELERYD_USER
 
66
#       User to run celeryd as. Default is current user.
 
67
#
 
68
#   * CELERYD_GROUP
 
69
#       Group to run celeryd as. Default is current user.
 
70
#
 
71
#   * VIRTUALENV
 
72
#       Full path to the virtualenv environment to activate. Default is none.
 
73
 
 
74
### BEGIN INIT INFO
 
75
# Provides:          celeryd
 
76
# Required-Start:    $network $local_fs $remote_fs
 
77
# Required-Stop:     $network $local_fs $remote_fs
 
78
# Default-Start:     2 3 4 5
 
79
# Default-Stop:      0 1 6
 
80
# Short-Description: celery task worker daemon
 
81
### END INIT INFO
 
82
 
 
83
set -e
 
84
 
 
85
DEFAULT_CELERYD="/usr/bin/celeryd"
 
86
 
 
87
# /etc/init.d/ssh: start and stop the celery task worker daemon.
 
88
 
 
89
. /lib/lsb/init-functions
 
90
 
 
91
DEFAULT_FILE="<%= celeryd_default_file %>"
 
92
 
 
93
if test -f "$DEFAULT_FILE"; then
 
94
    . "$DEFAULT_FILE"
 
95
fi
 
96
 
 
97
if [ "$NO_START" != "0" -a "$1" != "stop" ]; then
 
98
    if [ "$VERBOSE" != "no" ]; then
 
99
        log_warning_msg "Not starting celeryd - edit $DEFAULT_FILE and change NO_START to be 0."
 
100
    fi
 
101
    exit 0
 
102
fi
 
103
 
 
104
 
 
105
CELERYD_LOG_FILE=${CELERYD_LOG_FILE:-${CELERYD_LOGFILE:-"/var/log/celeryd.log"}}
 
106
CELERYD_PID_FILE=${CELERYD_PID_FILE:-${CELERYD_PIDFILE:-"/var/run/celeryd.pid"}}
 
107
CELERYD_LOG_LEVEL=${CELERYD_LOG_LEVEL:-${CELERYD_LOGLEVEL:-"INFO"}}
 
108
 
 
109
CELERYD=${CELERYD:-$DEFAULT_CELERYD}
 
110
 
 
111
export CELERY_LOADER
 
112
 
 
113
CELERYD_OPTS="$CELERYD_OPTS -f $CELERYD_LOG_FILE -l $CELERYD_LOG_LEVEL"
 
114
 
 
115
if [ -n "$2" ]; then
 
116
    CELERYD_OPTS="$CELERYD_OPTS $2"
 
117
fi
 
118
 
 
119
mkdir -p $(dirname "$CELERYD_PID_FILE")
 
120
mkdir -p $(dirname "$CELERYD_LOG_FILE")
 
121
 
 
122
# Extra start-stop-daemon options, like user/group.
 
123
if [ -n "$CELERYD_USER" ]; then
 
124
    DAEMON_OPTS="$DAEMON_OPTS --chuid $CELERYD_USER"
 
125
    chown "$CELERYD_USER" $(dirname "$CELERYD_LOG_FILE")
 
126
fi
 
127
if [ -n "$CELERYD_GROUP" ]; then
 
128
    DAEMON_OPTS="$DAEMON_OPTS --group $CELERYD_GROUP"
 
129
fi
 
130
 
 
131
if [ -n "$CELERYD_CHDIR" ]; then
 
132
    DAEMON_OPTS="$DAEMON_OPTS --chdir $CELERYD_CHDIR"
 
133
fi
 
134
 
 
135
 
 
136
# Are we running from init?
 
137
run_by_init() {
 
138
    ([ "$previous" ] && [ "$runlevel" ]) || [ "$runlevel" = S ]
 
139
}
 
140
 
 
141
 
 
142
check_dev_null() {
 
143
    if [ ! -c /dev/null ]; then
 
144
    if [ "$1" = log_end_msg ]; then
 
145
        log_end_msg 1 || true
 
146
    fi
 
147
    if ! run_by_init; then
 
148
        log_action_msg "/dev/null is not a character device!"
 
149
    fi
 
150
    exit 1
 
151
    fi
 
152
}
 
153
 
 
154
 
 
155
export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
 
156
 
 
157
 
 
158
stop_worker () {
 
159
    cmd="start-stop-daemon --stop \
 
160
                           --quiet \
 
161
                           $* \
 
162
                           --pidfile $CELERYD_PID_FILE"
 
163
    if $cmd; then
 
164
        log_end_msg 0
 
165
    else
 
166
        log_end_msg 1
 
167
    fi
 
168
}
 
169
 
 
170
start_worker () {
 
171
    cmd="start-stop-daemon --start $DAEMON_OPTS \
 
172
                           --quiet \
 
173
                           --oknodo \
 
174
                           --background \
 
175
                           --make-pidfile \
 
176
                           $* \
 
177
                           --pidfile $CELERYD_PID_FILE
 
178
                           --exec $CELERYD -- $CELERYD_OPTS"
 
179
    if [ -n "$VIRTUALENV" ]; then
 
180
        source $VIRTUALENV/bin/activate
 
181
    fi
 
182
    if $cmd; then
 
183
        log_end_msg 0
 
184
    else
 
185
        log_end_msg 1
 
186
    fi
 
187
}
 
188
 
 
189
 
 
190
 
 
191
case "$1" in
 
192
  start)
 
193
    check_dev_null
 
194
    log_daemon_msg "Starting celery task worker server" "celeryd"
 
195
    start_worker
 
196
    ;;
 
197
  stop)
 
198
    log_daemon_msg "Stopping celery task worker server" "celeryd"
 
199
    stop_worker --oknodo
 
200
    ;;
 
201
 
 
202
  reload|force-reload)
 
203
    echo "Use start+stop"
 
204
    ;;
 
205
 
 
206
  restart)
 
207
    log_daemon_msg "Restarting celery task worker server" "celeryd"
 
208
    stop_worker --oknodo --retry 30
 
209
    check_dev_null log_end_msg
 
210
    start_worker
 
211
    ;;
 
212
 
 
213
  try-restart)
 
214
    log_daemon_msg "Restarting celery task worker server" "celeryd"
 
215
    set +e
 
216
    stop_worker --retry 30
 
217
    RET="$?"
 
218
    set -e
 
219
    case $RET in
 
220
        0)
 
221
        # old daemon stopped
 
222
        check_dev_null log_end_msg
 
223
        start_worker
 
224
        ;;
 
225
        1)
 
226
        # daemon not running
 
227
        log_progress_msg "(not running)"
 
228
        log_end_msg 0
 
229
        ;;
 
230
        *)
 
231
        # failed to stop
 
232
        log_progress_msg "(failed to stop)"
 
233
        log_end_msg 1
 
234
        ;;
 
235
    esac
 
236
    ;;
 
237
 
 
238
  status)
 
239
    status_of_proc -p $CELERYD_PID_FILE $CELERYD celeryd && exit 0 || exit $?
 
240
    ;;
 
241
 
 
242
  *)
 
243
    log_action_msg "Usage: /etc/init.d/celeryd {start|stop|force-reload|restart|try-restart|status}"
 
244
    exit 1
 
245
esac
 
246
 
 
247
exit 0