如何将位于 python 虚拟环境中的 paster celeryd 进程守护进程化?

如何将位于 python 虚拟环境中的 paster celeryd 进程守护进程化?

我正在尝试对paster启动的进程进行守护celeryd

celeryd是仅存在于python虚拟环境中的粘贴脚本。

我对 没意见paster serve,因为它可以自我守护。 celeryd没有编码这种能力(因为开发人员没有包括它),建议使用已为项目贡献的初始化脚本。但是,我不确定如何将虚拟环境的需求集成paster到这个脚本中。

如何让paster celeryd进程自我守护?

谢谢。

[更新] 我最终选择使用 将进程放到后台&。我正在研究在 init 脚本中处理此问题的命令语法。您必须kill -SIGINT $(cat /var/run/celeryd.pid)向 paste 进程发送 SIGINT 信号(尝试)才能执行热关机(正确关闭由 marcin 的 paste 脚本 celeryd 生成的 celeryd 实例(是的,这有点令人困惑)。

答案1

当您在 Python 虚拟环境中获取activate脚本时,您基本上是在说 — 设置 PATH,这样当我输入 时python,它引用虚拟环境中的可执行文件。它采取的其他操作主要是表面性的,或者是为了能够“停用”虚拟环境而存在的。

考虑到这一点,当您将 celery 安装到虚拟环境中时,setuptools 将设置所有脚本的路径,具体来说是虚拟环境的python二进制文件。现在,输入celeryd 初始化脚本。您可以celeryd通过设置环境变量来覆盖要使用的二进制文件。您可以像这样CELERYD设置:/etc/default/celeryd

CELERYD=/path/to/virtualenv/bin/celeryd

这应该会celeryd使用您的虚拟环境启动二进制文件。希望这会有所帮助,如果您遇到任何问题,请告诉我!

注意:这适用于任何 Python 脚本 - 只要#!脚本顶部的标题指向您选择的 Python 可执行文件,您就可以使用您的虚拟环境。

相关内容