我有基于 django 和 celery 的 python 服务器。每次计算机重新启动时,apache2 都会启动,因此我的服务器正在工作,但我必须手动重新启动 celery(转到我的项目目录并执行“python manage.py celeryd”)。什么是生产的正确解决方案?我的意思是,是否有可能将芹菜作为守护进程启动?
在这里http://github.com/ask/celery/tree/master/contrib/debian/init.d/我发现了两个脚本,它们看起来应该在 /etc/init.d/ 中,就像启动 apache2 的 apache2 脚本一样。但我把它们放到 /etc/init.d/ 中,我发现没有任何变化。
您可以手动符号链接 /etc/rc5.d/ 中的 /etc/init.d 脚本,以便在 GUI 运行时启动。你需要另一个关机。
但是 Debian 有一个更高级(更好)的方法。这控制了从各个运行级别初始化脚本链接的内容。这就是这些脚本顶部的注释部分中使用的“BEGIN INIT INFO”。
如果您实际上使用的是 Debian,而不仅仅是使用其中一种资源中的脚本,请尝试使用
Celery 为supervisor提供了一个示例配置,一个负责与项目相关的任务和守护进程的守护进程。Debian Unstable 已经有一个打包版本的 supervisor 可用。如果您安装它,您只需要修改 celery 中的示例配置(在 contrib/supervisor 中找到)并将其放入 /etc/supervisor/conf.d/。
您没有提及您使用的是哪个发行版。了解这一点很重要,因为启动脚本因发行版而异。假设您正在使用 Redhat/CentOS ...
理想情况下,您应该跟踪 init.d 脚本。这是更好的选择,因为它还用于安全地关闭您的守护程序,重新加载它的配置,重新启动它等。如果您想要快速简便的解决方案,只需在文件
python manage.py celeryd
末尾粘贴“”/etc/rc.local
。编辑:我通过您的示例中的路径名看到您正在使用 Debian。我不确定 Debian 是否有 /etc/rc.local 文件。但我会留下这个答案,以防万一,或者这个信息对其他人有用。