Python 无法在服务器上将芹菜设置为守护进程

Python 无法在服务器上将芹菜设置为守护进程,python,django,celery,daemon,Python,Django,Celery,Daemon,我无法将芹菜设置为服务器上的守护进程(django 1.6.11、芹菜3.1、Ubuntu 14.04) 尝试了很多选项,任何人都可以设置完整的工作配置来运行芹菜作为守护进程吗 官方文件让我非常失望——这些都不起作用,也没有完整的分步教程。youtube上没有关于如何设置守护进程的视频(!!!) 现在我可以运行芹菜工人简单的芹菜-引擎-l信息-E django中的任务已成功执行 我已完成以下配置: /等/默认值/芹菜 # Name of nodes to start # here we

我无法将芹菜设置为服务器上的守护进程(django 1.6.11、芹菜3.1、Ubuntu 14.04) 尝试了很多选项,任何人都可以设置完整的工作配置来运行芹菜作为守护进程吗

官方文件让我非常失望——这些都不起作用,也没有完整的分步教程。youtube上没有关于如何设置守护进程的视频(!!!)

现在我可以运行芹菜工人简单的芹菜-引擎-l信息-E django中的任务已成功执行

我已完成以下配置:

/等/默认值/芹菜

    # 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
从没有变化的

现在,当我转到console并运行时: cd/etc/init.d 芹菜多糖w1

我看到输出:

celery multi v3.1.11 (Cipater)
> Starting nodes...
        > w1@engine: OK
所以,没有错误!任务未被调用,我无法找出问题所在。

我建议使用。这是一种比init脚本更好的方法,因为您可以在一台服务器上为不同的项目运行多个芹菜实例。您可以在我的项目中的示例或完全工作的示例中找到主管的示例配置:

# /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
我建议使用。这是一种比init脚本更好的方法,因为您可以在一台服务器上为不同的项目运行多个芹菜实例。您可以在我的项目中的示例或完全工作的示例中找到主管的示例配置:

# /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

不幸的是:Supervisor需要Python2.4或更高版本,但不适用于Python3的任何版本。您正在使用版本3.4.3-何时执行pipinstall@Vic使用软件包管理器在系统范围内安装supervisord。您可以在Ubuntu中使用
sudoapt-get-install-supervisor
完成此操作。这样,主管将使用系统的Python2.7.Thanx,这是可行的,但下一步是什么?我将文件celery.conf放在/etc/supervisor/conf.d中,更改了命令=/var/www/engine/celery worker-A engine--loglevel=INFO,然后user=root和environment=DJANGO\u SETTINGS\u MODULE=“engine.SETTINGS”和directory=/var/www/engine/,现在如何启动守护进程?我应该删除/etc/init.d/celeryd脚本吗?@Vic是的,您可以删除您创建的init脚本。现在重新加载supervisor,以便它读取并应用您的新配置:
sudoSupervisorCTL reload
。将来,您可以使用
sudo-supervisortl-restart-cellery
重新启动芹菜实例,但如果您再次更改芹菜.conf-reload-supervisor.As-expected-not-working),当do:sudo-supervisortl-reload显示:Restarted-supervisord时。然后我测试任务-未调用。当“sudo supervisorctl restart celery”显示“celery:ERROR(未运行)celery:ERROR(无此类文件)”时,我不确定:它是否真的能在python 2.7下工作并处理django和其他模块,所有模块都安装在python 3.4上?不幸的是:Supervisor需要python 2.4或更高版本,但不能在任何版本的python 3上工作。您正在使用版本3.4.3-何时执行pipinstall@Vic使用软件包管理器在系统范围内安装supervisord。您可以在Ubuntu中使用
sudoapt-get-install-supervisor
完成此操作。这样,主管将使用系统的Python2.7.Thanx,这是可行的,但下一步是什么?我将文件celery.conf放在/etc/supervisor/conf.d中,更改了命令=/var/www/engine/celery worker-A engine--loglevel=INFO,然后user=root和environment=DJANGO\u SETTINGS\u MODULE=“engine.SETTINGS”和directory=/var/www/engine/,现在如何启动守护进程?我应该删除/etc/init.d/celeryd脚本吗?@Vic是的,您可以删除您创建的init脚本。现在重新加载supervisor,以便它读取并应用您的新配置:
sudoSupervisorCTL reload
。将来,您可以使用
sudo-supervisortl-restart-cellery
重新启动芹菜实例,但如果您再次更改芹菜.conf-reload-supervisor.As-expected-not-working),当do:sudo-supervisortl-reload显示:Restarted-supervisord时。然后我测试任务-未调用。当“sudo supervisorctl restart celery”显示“celery:ERROR(未运行)celery:ERROR(无此类文件)”时,我不确定:它是否真的能在python 2.7下工作,并处理django和其他模块,所有这些都安装在python 3.4上?