Gentoo Archives: gentoo-commits

From: "Corentin Chary (iksaif)" <iksaif@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-x86 commit in dev-python/celery/files: celery.initd celery.confd
Date: Wed, 30 May 2012 06:46:13
Message-Id: 20120530064554.4090A2004C@flycatcher.gentoo.org
1 iksaif 12/05/30 06:45:54
2
3 Added: celery.initd celery.confd
4 Log:
5 New ebuild for celery. Closes bug #342041.
6
7 (Portage version: 2.1.10.63/cvs/Linux x86_64)
8
9 Revision Changes Path
10 1.1 dev-python/celery/files/celery.initd
11
12 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-python/celery/files/celery.initd?rev=1.1&view=markup
13 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-python/celery/files/celery.initd?rev=1.1&content-type=text/plain
14
15 Index: celery.initd
16 ===================================================================
17 #!/sbin/runscript
18 # Copyright 1999-2012 Gentoo Foundation
19 # Distributed under the terms of the GNU General Public License v2
20 # $Header: /var/cvsroot/gentoo-x86/dev-python/celery/files/celery.initd,v 1.1 2012/05/30 06:45:54 iksaif Exp $
21
22 extra_started_commands="reload"
23
24 depend() {
25 need net
26 use rabbitmq logger dns
27 }
28
29 CELERYD_ENABLED=${CELERYD_ENABLED:-"no"}
30 CELERYD_PID_FILE=${CELERYD_PID_FILE:-"/var/run/celery/celeryd@%n.pid"}
31 CELERYD_LOG_FILE=${CELERYD_LOG_FILE:-"/var/log/celery/celeryd@%n.log"}
32 CELERYD_LOG_LEVEL=${CELERYD_LOG_LEVEL:-"INFO"}
33 CELERYD_NODES=${CELERYD_NODES:-"celery"}
34
35 CELERYBEAT_ENABLED=${CELERYBEAT_ENABLED:-"no"}
36 CELERYBEAT_PID_FILE=${CELERYBEAT_PID_FILE:-"/var/run/celery/celerybeat.pid"}
37 CELERYBEAT_LOG_FILE=${CELERYBEAT_LOG_FILE:-"/var/log/celery/celerybeat.log"}
38 CELERYBEAT_LOG_LEVEL=${CELERYBEAT_LOG_LEVEL:-"INFO"}
39
40 CELERYEV_ENABLED=${CELERYEV_ENABLED:-"no"}
41 CELERYEV_PID_FILE=${CELERYEV_PID_FILE:-"/var/run/celery/celeryev.pid"}
42 CELERYEV_LOG_FILE=${CELERYEV_LOG_FILE:-"/var/log/celery/celeryev.log"}
43 CELERYEV_LOG_LEVEL=${CELERYEV_LOG_LEVEL:-"INFO"}
44
45 export CELERY_LOADER
46
47 if yesno "$CELERY_DJANGO"; then
48 CELERYD=${CELERYD:-"celeryd_detach"}
49 CELERYCTL=${CELERYCTL:-"python manage.py celeryd"}
50 CELERYD_MULTI=${CELERYD_MULTI:-"python manage.py celeryd_multi"}
51 CELERYBEAT=${CELERYBEAT:-"python manage.py celerybeat"}
52 CELERYEV=${CELERYEV:-"python manage.py celeryev"}
53 CELERYEV_CAM=${CELERYEV_CAM:-"djcelery.snapshot.Camera"}
54 else
55 CELERYD=${CELERYD:-"-m celery.bin.celeryd_detach"}
56 CELERYD_MULTI=${CELERYD_MULTI:-"celeryd-multi"}
57 CELERYCTL=${CELERYCTL:-"celeryctl"}
58 CELERYBEAT=${CELERYBEAT:-"celerybeat"}
59 CELERYEV=${CELERYEV:-"celeryev"}
60 fi
61
62 CELERYD_OPTS="$CELERYD_OPTS -f $CELERYD_LOG_FILE -l $CELERYD_LOG_LEVEL"
63 CELERYBEAT_OPTS="$CELERYBEAT_OPTS -f $CELERYBEAT_LOG_FILE -l $CELERYBEAT_LOG_LEVEL"
64 CELERYEV_OPTS="$CELERYEV_OPTS -f $CELERYEV_LOG_FILE -l $CELERYEV_LOG_LEVEL -c $CELERYEV_CAM"
65
66 create_dirs() {
67 local logfile="$1"
68 local pidfile="$2"
69 local logdir=`dirname $logfile`
70 local piddir=`dirname $pidfile`
71
72 if [ ! -d "$logdir" ]; then
73 mkdir -p $logdir
74 fi
75 if [ ! -d "$piddir" ]; then
76 mkdir -p $piddir
77 fi
78
79 if [ -n "$CELERY_USER" ]; then
80 chown "$CELERY_USER" $logdir $piddir
81 fi
82 if [ -n "$CELERY_GROUP" ]; then
83 chown ":$CELERY_GROUP" $logdir $piddir
84 fi
85 }
86
87 if [ -n "$CELERY_USER" ]; then
88 DAEMON_OPTS="$DAEMON_OPTS --uid=$CELERY_USER"
89 fi
90 if [ -n "$CELERY_GROUP" ]; then
91 DAEMON_OPTS="$DAEMON_OPTS --gid=$CELERY_GROUP"
92 fi
93
94 checkconfig() {
95 if [ ! -c /dev/null ]; then
96 eerror "/dev/null is not a character device!"
97 return 1
98 fi
99
100 if [ -z "$CELERY_PROJDIR" ]; then
101 eerror "Missing CELERY_PROJDIR variable"
102 return 1
103 fi
104
105 if yesno "$CELERYD_ENABLED"; then
106 create_dirs "$CELERYD_LOG_FILE" "$CELERYD_PID_FILE"
107 fi
108
109 if yesno "$CELERYBEAT_ENABLED"; then
110 create_dirs "$CELERYBEAT_LOG_FILE" "$CELERYBEAT_PID_FILE"
111 fi
112
113 if yesno "$CELERYEV_ENABLED"; then
114 create_dirs "$CELERYEV_LOG_FILE" "$CELERYEV_PID_FILE"
115
116 if [ -z "$CELERYEV_CAM" ]; then
117 eerror "Missing CELERYEV_CAM variable"
118 return 1
119 fi
120 fi
121
122 return 0
123 }
124
125 celery_chdir() {
126 if [ -n "$CELERY_PROJDIR" ]; then
127 cd "$CELERY_PROJDIR"
128 fi
129 }
130
131 wait_pid () {
132 local pidfile=$1
133 local timeout=${STOPTIMEOUT:-"10"}
134 local PID=$(cat "${pidfile}" 2>/dev/null)
135
136 while [[ -n "$PID" && "${timeout}" -ge 1 ]] ; do
137 kill -0 $PID 2>/dev/null || break
138 kill -TERM "$PID"
139 timeout=$(($timeout - 1))
140 sleep 0.5
141 done
142
143 [[ "${timeout}" -lt 1 ]] && return 1
144 [ -f $pidfile ] && rm -f $pidfile
145 return 0
146 }
147
148 # celeryd
149 start_workers() {
150 yesno "${CELERYD_ENABLED}" || return 0
151
152 $CELERYD_MULTI start $CELERYD_NODES $DAEMON_OPTS \
153 --pidfile="$CELERYD_PID_FILE" \
154 --logfile="$CELERYD_LOG_FILE" \
155 --loglevel="$CELERYD_LOG_LEVEL" \
156 --cmd="$CELERYD" \
157 $CELERYD_OPTS
158 }
159
160 stop_workers() {
161 yesno "${CELERYD_ENABLED}" || return 0
162
163 local timeout=${STOPTIMEOUT:-"10"}
164
165 $CELERYD_MULTI stop $CELERYD_NODES --pidfile="$CELERYD_PID_FILE" || return 1
166
167 # Wait for each node
168 for node in $CELERYD_NODES; do
169 local pidfile=${CELERYD_PID_FILE/\%n/$node}
170 local PID=$(cat "${pidfile}" 2>/dev/null)
171 while [[ -n "$PID" && "${timeout}" -ge 1 ]] ; do
172 kill -0 $PID 2>/dev/null || break
173 timeout=$(($timeout - 1))
174 sleep 0.5
175 done
176 done
177
178 [[ "${timeout}" -lt 1 ]] && return 1
179 return 0
180 }
181
182 restart_workers() {
183 yesno "${CELERYD_ENABLED}" || return 0
184
185 $CELERYD_MULTI restart $CELERYD_NODES $DAEMON_OPTS \
186 --pidfile="$CELERYD_PID_FILE" \
187 --logfile="$CELERYD_LOG_FILE" \
188 --loglevel="$CELERYD_LOG_LEVEL" \
189 --cmd="$CELERYD" \
190 $CELERYD_OPTS
191 }
192
193 # celeryev
194 start_ev() {
195 yesno "${CELERYEV_ENABLED}" || return 0
196
197 ebegin "Starting celeryev"
198 $CELERYEV $CELERYEV_OPTS $DAEMON_OPTS --detach \
199 --pidfile="$CELERYEV_PID_FILE"
200 eend $?
201 }
202
203
204 stop_ev() {
205 yesno "${CELERYEV_ENABLED}" || return 0
206
207 ebegin "Stopping celeryev"
208 if [ -f "$CELERYEV_PID_FILE" ]; then
209 wait_pid "$CELERYEV_PID_FILE"
210 else
211 eerror "not running"
212 fi
213 eend $?
214 }
215
216 # celerybeat
217 start_beat() {
218 yesno "${CELERYBEAT_ENABLED}" || return 0
219
220 ebegin "Starting celerybeat"
221 $CELERYBEAT $CELERYBEAT_OPTS $DAEMON_OPTS --detach \
222 --pidfile="$CELERYBEAT_PID_FILE"
223 eend $?
224 }
225
226
227 stop_beat() {
228 yesno "${CELERYBEAT_ENABLED}" || return 0
229
230 ebegin "Stopping celerybeat"
231 if [ -f "$CELERYBEAT_PID_FILE" ]; then
232 wait_pid "$CELERYBEAT_PID_FILE"
233 else
234 eerror "not running"
235 fi
236 eend $?
237 }
238
239
240 start() {
241 local cr=0
242
243 checkconfig || return 1
244
245 ebegin "Starting ${SVCNAME}"
246 eindent
247
248 celery_chdir && \
249 start_workers && \
250 start_beat && \
251 start_ev || cr=1
252
253 eoutdent
254 eend $cr
255 }
256
257 stop() {
258 local cr=0
259
260 checkconfig || return 1
261
262 ebegin "Stopping ${SVCNAME}"
263 eindent
264
265 celery_chdir
266 stop_workers || cr=1
267 stop_beat || cr=1
268 stop_ev || cr=1
269
270 eoutdent
271 eend $cr
272 }
273
274 reload() {
275 local cr=0
276
277 checkconfig || return 1
278
279 ebegin "Restarting ${SVCNAME}"
280 eindent
281
282 celery_chdir
283 restart_workers || cr=1
284 stop_beat && start_beat || cr=1
285 stop_ev && start_ev || cr=1
286
287 eoutdent
288 eend $cr
289 }
290
291 status() {
292 checkconfig || return 1
293
294 ${CELERYCTL} status
295 }
296
297
298
299 1.1 dev-python/celery/files/celery.confd
300
301 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-python/celery/files/celery.confd?rev=1.1&view=markup
302 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-python/celery/files/celery.confd?rev=1.1&content-type=text/plain
303
304 Index: celery.confd
305 ===================================================================
306 # /etc/conf.d/celery
307
308 ##############################################################################
309 # GLOBAL CONFIGURATION
310
311 # User and group
312 #CELERY_USER="celery"
313 #CELERY_GROUP="celery"
314
315 # Is this for a django project ?
316 # If 'yes' it will automatically setup CELERYD, CELERYCTL
317 # CELERYD_MULTI, CELERYBEAT, CELERYEV and CELERYEV_CAM for a
318 # django project, but you can still override them here.
319 #CELERY_DJANGO="yes"
320
321 # Full path to the python project directory.
322 #CELERY_PROJDIR="/var/lib/myproject"
323
324 ##############################################################################
325 # CELERYD
326
327 #CELERYD_ENABLED="yes"
328
329 # celeryd notes
330 #CELERYD_NODES="celery"
331
332 # celeryd options
333 # Example: 5 minute hard time limit for tasks
334 #CELERYD_OPTS="--time-limit=300"
335
336 # Location and level of the celeryd log file
337 #CELERYD_LOG_FILE=/var/log/celery/celeryd@%n.log
338 #CELERYD_LOG_LEVEL="INFO"
339
340 # Location of the celeryd pid file
341 #CELERYD_PID_FILE=/var/run/celery/celeryd@%n.pid
342
343 ##############################################################################
344 # CELERYBEAT
345
346 #CELERYBEAT_ENABLED="yes"
347
348 # celerybeat options
349 #CELERYBEAT_OPTS=""
350
351 # Location and level of the celerybeat log file
352 #CELERYBEAT_LOG_FILE=/var/log/celery/celerybeat.log
353 #CELERYBEAT_LOG_LEVEL="INFO"
354
355 # Location of the celerybeat pid file
356 #CELERYBEAT_PID_FILE=/var/run/celery/celerybeat.pid
357
358 ##############################################################################
359 # CELERYEV
360
361 #CELERYEV_ENABLED="yes"
362
363 # celeryev options
364 #CELERYEV_OPTS=""
365
366 # Location and level of the celeryev log file
367 #CELERYEV_LOG_FILE=/var/log/celery/celeryev.log
368 #CELERYEV_LOG_LEVEL="INFO"
369
370 # Location of the celeryev pid file
371 #CELERYEV_PID_FILE=/var/run/celery/celeryev.pid