我正在使用虚拟环境中的变量设置芹菜来运行守护进程。但是当我运行$ sudo /etc/init.d/celeryd start
时,我得到Unknown command: 'celeryd_multi' Type 'manage.py help' for usage.
我已设置以下内容:
CELERYD_CHDIR = “/家/为myuser /项目/ myproject的” ENV_PYTHON = “/家/ myuser的/ .virtualenvs / myproject的/ bin中/蟒蛇” CELERYD_MULTI =“$ ENV_PYTHON $ CELERYD_CHDIR / manage.py celeryd_multi”
当我从命令行运行$ /home/myuser/.virtualenvs/myproject/bin/python /home/myuser/projects/myproject/manage.py celeryd_multi
时,它运行正常。
有什么想法吗?我很乐意发布您需要的任何其他代码:)
谢谢!
答案 0 :(得分:9)
也许你只是设置错误的DJANGO_SETTINGS_MODULE:
尝试:DJANGO_SETTINGS_MODULE =“设置”< - > DJANGO_SETTINGS_MODULE =“project.settings”
答案 1 :(得分:3)
这里的问题是,当你以用户身份运行它时,virtualenv已经为你的用户“myuser”激活了适当的环境,它从/home/myuser/.virtualenvs/myproject /...
中提取了包。当你做sudo /etc/init.d/celeryd启动时,你正在以root身份启动celery,这可能没有在/root/.virtualenvs/中激活virtualenv,如果这样的事情甚至存在,那么它会查找python包在/ usr / lib / ...中你的默认python是什么,因此你的芹菜没有安装。
您可以选择:
su - myuser -c /bin/sh /home/myuser/.virtualenvs/myproject/bin/celeryd
作为myuser从init.d调用它的脚本。思想: