Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django sudo/etc/init.d/celeryd start生成一个;未知命令:';celeryd#u multi'&引用;_Django_Celery_Django Celery - Fatal编程技术网

Django sudo/etc/init.d/celeryd start生成一个;未知命令:';celeryd#u multi'&引用;

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

我正在使用虚拟环境中的变量设置芹菜以运行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_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所在的位置以及芹菜未安装的位置

您的选择是:

  • 在root用户下复制相同的virtualenv,并像使用sudo一样启动它
  • 让virtualenv保持原样,在不使用init脚本的情况下以用户“myuser”(无sudo)的身份启动芹菜
  • 编写一个脚本
    su-myuser-c/bin/sh/home/myuser/.virtualenvs/myproject/bin/celeryd
    ,以myuser身份从init.d调用它
  • 在virtualenv之外安装supervisor,并让它为您进行直接工作
  • 想法:

  • 避免在不需要的情况下使用root
  • 如果启动时不需要芹菜,那么可以用脚本包起来
  • 对我来说很简单,但如果你不想额外投入30分钟来使用其他东西的话,这是可行的
  • 这可能是处理所有python启动需求的最佳方法,强烈推荐

  • 可能您只是设置了一个错误的DJANGO_设置_模块:


    试试:DJANGO\u SETTINGS\u MODULE=“SETTINGS”DJANGO\u SETTINGS\u MODULE=“project.SETTINGS”

    谢谢!我创建了一个bash脚本,检查芹菜是否正在运行,是否从cron执行。这不是最好的解决方案,但在当时是最简单的。这个建议对我很有效——我使用的是我最初为版本1.3中创建的django项目创建的celeryd脚本。该脚本不再工作,因为使用django 1.4创建的项目的设置文件已移动。这对我的情况也有帮助。