首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sudo /etc/init.d/celeryd_multi生成一个“未知命令:'celeryd_multi'”

sudo /etc/init.d/celeryd_multi生成一个“未知命令:'celeryd_multi'”
EN

Stack Overflow用户
提问于 2012-07-11 23:51:52
回答 2查看 3.2K关注 0票数 3

使用虚拟环境中的变量,我正在设置芹菜来运行守护进程。但是当我运行$ sudo /etc/init.d/celeryd start时,我得到了Unknown command: 'celeryd_multi' Type 'manage.py help' for usage.

我提出了以下几点:

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时,它工作得很好。

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

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-12 00:41:05

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

当您执行sudo /etc/init.d/celeryd启动时,您将芹菜作为根启动,它可能没有在/ root /..virtualenvs/如果存在这样的东西中激活虚拟and,因此它在/usr/lib/.中查找python包。默认的python在哪里,因此哪里没有安装您的芹菜。

你的选择是:

  1. 在root用户下复制相同的virtualenv,并像使用sudo一样启动它。
  2. 保持virtualenv的位置,并启动芹菜作为您的用户"myuser“(没有sudo),而不使用init脚本。
  3. 编写一个su - myuser -c /bin/sh /home/myuser/.virtualenvs/myproject/bin/celeryd脚本,以myuser的身份从init.d调用它。
  4. 在virtualenv之外安装主管,让它为您做脏工作。

思想:

  1. 避免在不需要使用根的情况下使用根。
  2. 如果您不需要芹菜开始启动,那么这是很好的,包装在一个脚本可能。
  3. 对我来说很简单,但是如果你不想花30分钟额外的时间去使用其他的东西的话,它是有效的。
  4. 强烈推荐的可能是处理所有python启动需求的最佳方法。
票数 3
EN

Stack Overflow用户

发布于 2012-09-24 18:21:25

也许你只是设置了一个错误的DJANGO_SETTINGS_MODULE:

尝试:DJANGO_SETTINGS_MODULE=“设置”<-> DJANGO_SETTINGS_MODULE="project.settings“

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11443245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档