Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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
Linux 从Django应用程序中自动启动芹菜_Linux_Django_Debian_Celery_Google Compute Engine - Fatal编程技术网

Linux 从Django应用程序中自动启动芹菜

Linux 从Django应用程序中自动启动芹菜,linux,django,debian,celery,google-compute-engine,Linux,Django,Debian,Celery,Google Compute Engine,我正在谷歌计算引擎上的Linux(Debian Whisky)服务器上安装Django 1.6。我有芹菜3.1在后台运行,以帮助一些进程。当我启动一个新实例(使用我创建的快照)时,我总是需要启动芹菜。我正在寻找一种方法来启动芹菜自动服务器负载。如果服务器决定重新启动,这一点尤其有用,就像他们偶尔会做的那样。为了实现这一点,我编辑了rc.local文件: $ sudo nano /etc/rc.local 它曾经包含以下内容: exit 0 [ -x /sbin/initctl ] &&

我正在谷歌计算引擎上的Linux(Debian Whisky)服务器上安装Django 1.6。我有芹菜3.1在后台运行,以帮助一些进程。当我启动一个新实例(使用我创建的快照)时,我总是需要启动芹菜。我正在寻找一种方法来启动芹菜自动服务器负载。如果服务器决定重新启动,这一点尤其有用,就像他们偶尔会做的那样。为了实现这一点,我编辑了
rc.local
文件:

$ sudo nano /etc/rc.local
它曾经包含以下内容:

exit 0
[ -x /sbin/initctl ] && initctl emit --no-wait google-rc-local-has-run || true
我已编辑该文件,使其现在显示:

cd /home/user/gce_app celery -A myapp.tasks --concurrency=1 --loglevel=info worker > output.log 2> errors.log &
exit 0
[ -x /sbin/initctl ] && initctl emit --no-wait google-rc-local-has-run || true
目录:

/home/user/gce_app
是我的Django项目所在的地方,也是启动芹菜所需的目录。但是,在重新启动实例后,当我键入时:

$ celery status
Error: No nodes replied within time constraint.
打开
errors.log
文件,我看到:

/etc/rc.local: 14: /etc/rc.local: celery: not found

当然,该代码字符串开头的
cd
应该解决这个问题吗?是否有一种方法(在Django项目本身中)在项目启动时启动芹菜实例,以使代码更独立于平台,并且不受不可避免的操作系统更新的影响?

因为您似乎正在使用upstart,这可能会帮助您:

description "runs celery"
start on runlevel [2345]
stop on runlevel [!2345]

console log
env VENV='/srv/myvirtualenv'
env PROJECT='/srv/run/mydjangoproject'

exec su -s /bin/sh -c 'exec "$0" "$@"' www-data -- /usr/bin/env PATH=$VENV:$PATH     $VENV/python $PROJECT/manage.py celeryd

respawn
respawn limit 10 5

我认为你的“cd”和芹菜调用之间缺少了一个分号。另外,我怀疑rc.local可能没有搜索您的路径,因此您可能需要提供芹菜的绝对路径。e、 g

cd/home/user/gce\u应用程序/usr/bin/芹菜…


或者,您可以考虑使用,以避免需要修改rc.local。

注意此处的respawn。我不会用那个,芹菜工人是为了强壮而设计的。请看这些脚本。感谢您的评论-我将尝试使用分号。这里的关键是找到一种通过django应用程序启动芹菜的方法。我不想被锁定在GCE或任何其他echo系统中——因此,如果有办法将启动请求与django应用程序本身联系起来,那就太棒了。