我正在尝试对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 可执行文件,您就可以使用您的虚拟环境。