Django sudo/etc/init.d/celeryd start生成一个;未知命令:';celeryd#u multi'&引用;
我正在使用虚拟环境中的变量设置芹菜以运行daemonized。但是当我运行Django sudo/etc/init.d/celeryd start生成一个;未知命令:';celeryd#u multi'&引用;,django,celery,django-celery,Django,Celery,Django Celery,我正在使用虚拟环境中的变量设置芹菜以运行daemonized。但是当我运行$sudo/etc/init.d/celeryd start时,我会得到未知命令:“celeryd\u multi”Type“manage.py help”以供使用。 我设定了以下条件: CELERYD_CHDIR=“/home/myuser/projects/myproject” ENV_PYTHON=“/home/myuser/.virtualenvs/myproject/bin/PYTHON” CELERYD_MUL
$sudo/etc/init.d/celeryd start
时,我会得到未知命令:“celeryd\u multi”Type“manage.py help”以供使用。
我设定了以下条件:
CELERYD_CHDIR=“/home/myuser/projects/myproject”
ENV_PYTHON=“/home/myuser/.virtualenvs/myproject/bin/PYTHON”
CELERYD_MULTI=“$ENV_PYTHON$CELERYD_CHDIR/manage.py CELERYD_MULTI”
当我从命令行运行$/home/myuser/.virtualenvs/myproject/bin/python/home/myuser/projects/myproject/manage.py celeryd\u multi
时,它工作正常
有什么想法吗?我很乐意发布您需要的任何其他代码:)
谢谢大家! 这里的问题是,当您以用户身份运行它时,VirtualEnvironment已经为您的用户“myuser”激活了适当的环境,并且它从/home/myuser/.virtualenvs/myproject/ 当您执行sudo/etc/init.d/celeryd start时,您将芹菜作为root启动,这可能不会在/root/.virtualenvs/中激活virtualenv/如果这样的东西存在,那么它会在/usr/lib/中查找python包。。。默认python所在的位置以及芹菜未安装的位置 您的选择是:
su-myuser-c/bin/sh/home/myuser/.virtualenvs/myproject/bin/celeryd
,以myuser身份从init.d调用它可能您只是设置了一个错误的DJANGO_设置_模块:
试试:DJANGO\u SETTINGS\u MODULE=“SETTINGS”DJANGO\u SETTINGS\u MODULE=“project.SETTINGS”谢谢!我创建了一个bash脚本,检查芹菜是否正在运行,是否从cron执行。这不是最好的解决方案,但在当时是最简单的。这个建议对我很有效——我使用的是我最初为版本1.3中创建的django项目创建的celeryd脚本。该脚本不再工作,因为使用django 1.4创建的项目的设置文件已移动。这对我的情况也有帮助。