代码之家  ›  专栏  ›  技术社区  ›  Vic Nicethemer

无法将Celery设置为服务器上的守护程序

  •  0
  • Vic Nicethemer  · 技术社区  · 8 年前

    我无法在服务器上将芹菜设置为守护程序(django 1.6.11、芹菜3.1、Ubuntu 14.04) 尝试了很多选项,有人可以将工作配置的全部设置设置为运行芹菜作为守护程序吗?

    我对官方文件感到非常失望 http://docs.celeryproject.org/en/latest/tutorials/daemonizing.html#generic-init-scripts -这些都不管用,没有完整的分步教程。零(!!!)youtube上关于如何设置守护程序的视频。

    现在我可以通过芹菜工人简单地运行芹菜了-A引擎-l信息-E 来自django的任务成功执行。

    我已完成配置:

    /etc/defaults/芹菜

        # Name of nodes to start
    # here we have a single node
    CELERYD_NODES="w1"
    # or we could have three nodes:
    #CELERYD_NODES="w1 w2 w3"
    
    # Absolute path to "manage.py"
    CELERY_BIN="/var/www/engine/manage.py"
    
    # How to call manage.py
    CELERYD_MULTI="celery multi"
    
    # Extra command-line arguments to the worker
    CELERYD_OPTS="--time-limit=300 --concurrency=2"
    
    # %N will be replaced with the first part of the nodename.
    CELERYD_LOG_FILE="/var/log/celery/%N.log"
    CELERYD_PID_FILE="/var/run/celery/%N.pid"
    
    # Workers should run as an unprivileged user.
    CELERYD_USER="root"
    CELERYD_GROUP="root"
    

    /etc/init.d/celeryd等
    https://github.com/celery/celery/blob/3.1/extra/generic-init.d/celeryd 没有更改

    现在,当我转到控制台并运行时: 光盘/etc/init.d 芹菜多启动w1

    我看到输出:

    celery multi v3.1.11 (Cipater)
    > Starting nodes...
            > w1@engine: OK
    

    所以,没有错误!任务没有被调用,我也不知道出了什么问题。

    1 回复  |  直到 8 年前
        1
  •  3
  •   Mikhail Pyrev    8 年前

    我建议使用 Supervisor 。这比init脚本更好,因为您可以在一台服务器上为不同的项目运行多个Celery实例。您可以在中找到Supervisor的配置示例 Celery repo 或我的项目中的完整工作示例:

    # /etc/supervisor/conf.d/celery.conf
    [program:celery]
    command=/home/newspos/.virtualenvs/newspos/bin/celery worker -A newspos --loglevel=INFO
    user=newspos
    environment=DJANGO_SETTINGS_MODULE="newspos.settings"
    directory=/home/newspos/projects/newspos/
    autostart=true
    autorestart=true
    stopwaitsecs = 600
    killasgroup=true
    startsecs=10
    stdout_logfile=/var/log/celery/newspos-celeryd.log
    stderr_logfile=/var/log/celery/newspos-celeryd.log