#!/bin/sh # # rc.d script for the vrobbler Celery beat scheduler. # # PROVIDE: vrobbler_celerybeat # REQUIRE: NETWORKING postgresql redis # KEYWORD: shutdown # # Installation (on the FreeBSD jail): # # install -m 0555 rc.d/vrobbler_celerybeat /usr/local/etc/rc.d/vrobbler_celerybeat # sysrc vrobbler_celerybeat_enable="YES" # service vrobbler_celerybeat start # # Configuration (via sysrc or /etc/rc.conf): # # vrobbler_celerybeat_bin - path to celery (default: /usr/local/bin/celery) # vrobbler_celerybeat_user - user to run as (default: root) # vrobbler_celerybeat_flags - extra daemon(8) flags # # NOTE: do not name the celery path knob "${name}_program". FreeBSD's # rc.subr(8) overrides $command with ${name}_program whenever it is set, # which would replace the daemon(8) wrapper with celery itself. # # The command is run under daemon(8) with a supervisor pidfile (-P) and # restart-on-crash (-R), so beat is automatically restarted if it dies. # # The schedule state is persisted to /var/db/vrobbler/celerybeat-schedule so it # survives restarts (beat picks up the CELERY_BEAT_SCHEDULE entries in # settings.py). If you run beat as a non-root user, make sure it can write # /var/db/vrobbler and /var/log/vrobbler_celerybeat.log. Rotate the log with # newsyslog(8). # . /etc/rc.subr name="vrobbler_celerybeat" rcvar="vrobbler_celerybeat_enable" load_rc_config ${name} : ${vrobbler_celerybeat_enable:="NO"} : ${vrobbler_celerybeat_bin:="/usr/local/bin/celery"} pidfile="/var/run/${name}.pid" command="/usr/sbin/daemon" command_args="-f -P ${pidfile} -R 5 -t ${name} ${vrobbler_celerybeat_bin} -A vrobbler beat -n beat@%h -l info --schedule /var/db/vrobbler/celerybeat-schedule --logfile /var/log/${name}.log" start_precmd="vrobbler_celerybeat_prestart" vrobbler_celerybeat_prestart() { mkdir -p /var/db/vrobbler } run_rc_command "$1"