2

我正在编写一个使用 celery 的 Django 应用程序。到目前为止,我一直在 Ubuntu 上运行,但我正在尝试部署到 CentOS。

Celery 为基于 Debian 的发行版提供了一个不错的 init.d 脚本,但它不适用于像 CentOS 这样的基于 RedHat 的发行版,因为它使用 start-stop-daemon。有没有人有一个等效的 RedHat 使用相同的变量约定,所以我可以重用我的 /etc/default/celeryd 文件?

4

2 回答 2

4

最好在这里解决:

Celery CentOS 初始化脚本

你应该很好用那个

于 2012-01-18T17:41:18.840 回答
3

由于我没有得到答案,我试着自己动手:

#!/bin/sh
#
# chkconfig: 345 99 15
# description: celery init.d script

# Defines the following variables
# CELERYD_CHDIR
# DJANGO_SETTINGS_MODULE
# CELERYD
# CELERYD_USER
# CELERYD_GROUP
# CELERYD_LOG_FILE

CELERYD_PIDFILE=/var/run/celery.pid

if test -f /etc/default/celeryd; then
    . /etc/default/celeryd
fi


# Source function library.
. /etc/init.d/functions

# Celery options
CELERYD_OPTS="$CELERYD_OPTS -f $CELERYD_LOG_FILE -l $CELERYD_LOG_LEVEL"

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

start () {
        cd $CELERYD_CHDIR
        daemon --user $CELERYD_USER --pidfile $CELERYD_PIDFILE $CELERYD $CELERYD_OPTS &
}

stop () {
        if [[ -s $CELERYD_PIDFILE ]] ; then
            echo "Stopping Celery"
            killproc -p $CELERYD_PIDFILE python
            echo "done!"
            rm -f $CELERYD_PIDFILE
        else
            echo "Celery not running."
        fi    
}

check_status() {
    status -p $CELERYD_PIDFILE python
}


case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        check_status
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
        ;;
esac
于 2010-10-28T19:34:37.240 回答