加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

django – sudo /etc/init.d/celeryd start生成“未知命令:’ce

发布时间:2020-12-20 12:20:30 所属栏目:Python 来源:网络整理
导读:我正在使用我的虚拟环境中的变量设置celery来运行daemonized.但是当我运行$sudo /etc/init.d/celeryd start时,我收到未知命令:’celeryd_multi’输入’manage.py help’以供使用. 我设置了以下内容: CELERYD_CHDIR=”/home/myuser/projects/myproject” EN
我正在使用我的虚拟环境中的变量设置celery来运行daemonized.但是当我运行$sudo /etc/init.d/celeryd start时,我收到未知命令:’celeryd_multi’输入’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_multi时,它运行正常.

有任何想法吗?我很乐意发布你需要的任何其他代码:)

谢谢!

解决方法

这里的问题是当你以用户身份运行它时,virtualenv已经为你的用户“myuser”激活了适当的环境,它从/home/myuser/.virtualenvs/myproject /中提取包.

当您执行sudo /etc/init.d/celeryd start时,您将以root身份启动芹菜,如果这样的东西甚至存在,可能没有在/root/.virtualenvs/中激活virtualenv,因此它在/ usr中查找python包/ lib / …你的默认python是什么,因此你的芹菜没有安装.

您可以选择:

>在root用户下复制相同的virtualenv并像尝试使用sudo一样启动它
>保持virtualenv的位置,并在不使用init脚本的情况下以您的用户“myuser”(无sudo)启动celery.
>编写一个脚本,将su – myuser -c / bin / sh /home/myuser/.virtualenvs/myproject/bin/celeryd作为myuser从init.d调用它.
>在virtualenv之外安装主管,让它为你做脏工

思考:

>避免将root用于任何你不需要的东西.>如果您不需要芹菜来启动,那么这很好,可能包含在脚本中.>对我来说简单的hackish,但如果你不想再投资30分钟来使用别的东西,那就有效.>强烈推荐可能是处理所有python启动需求的最佳方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读