是否可以在启动时自动运行 celery ?

是否可以在启动时自动运行 celery ?

我有基于 django 和 celery 的 python 服务器。每次计算机重新启动时,apache2 都会启动,因此我的服务器正在运行,但我必须手动重新启动 celery(转到我的项目目录并执行“python manage.py celeryd”)。什么是适合生产的正确解决方案?我的意思是,是否有可能将 celery 作为守护进程启动?

这里http://github.com/ask/celery/tree/master/contrib/debian/init.d/我找到了两个脚本,它们看起来应该在 /etc/init.d/ 中,就像启动 apache2 的 apache2 脚本一样。但我把它们放到 /etc/init.d/ 中,却发现没有任何变化。

答案1

您可以手动将 /etc/init.d 脚本与 /etc/rc5.d/ 符号链接,以便在 GUI 启动时启动。此外,您还需要另一个脚本来关闭。

但是 Debian 有一个更先进(更好)的方法。它控制从各个运行级别 init 脚本链接的内容。这就是这些脚本顶部注释部分中的“BEGIN INIT INFO”的用途。

如果你真的在使用 Debian,而不是仅仅使用来自其资源之一的脚本,请尝试使用

update-rc.d celerybeat 默认值
update-rc.d celeryd 默认值

答案2

Celery 提供了一个示例配置导师,一个负责处理项目相关任务和守护进程的守护进程。Debian Unstable 已经有一个打包版本的 Supervisor。如果您安装它,则只需修改 celery 中的示例配置(位于 contrib/supervisor 中)并将其放入 /etc/supervisor/conf.d/ 中。

答案3

您没有提到您使用的是哪个发行版。了解这一点很重要,因为启动脚本在不同的发行版之间有很大差异。假设您使用的是 Redhat/CentOS...

理想情况下,您应该找到一个 init.d 脚本。这是更好的选择,因为它还用于安全地关闭守护进程、重新加载其配置、重新启动它等。但是,如果您想要快速简便的解决方案,只需python manage.py celeryd在文件末尾添加“ ” /etc/rc.local

编辑:从您示例中的路径名可以看出您正在使用 Debian。我不确定 Debian 是否有 /etc/rc.local 文件。但我将保留此答案,以防万一,或者以防此信息对其他人有用。

相关内容