我如何将一个生活在python虚拟环境中的贴纸芹菜过程守护进程?

我正在试图启动一个启动celerydpaster过程。

celeryd是一个只存在于python虚拟环境中的celeryd脚本。

我没有问题,因为这可以守护自己。 celeryd没有这种能力编码(因为开发者没有包含它),build议使用已经贡献给项目的初始化脚本 。 但是,我不确定如何将对虚拟环境和paster的需求整合到脚本中。

我如何使用paster celeryd过程守护程序本身?

谢谢。

[更新]我最终只是select使用&放弃进程到后台。 我正在处理在init脚本中处理这个命令的语法。 您必须发送一个SIGINT信号(尝试kill -SIGINT $(cat /var/run/celeryd.pid) )到粘贴过程中,以便执行热关机(正确closures由marcin的粘贴脚本celeryd产生的芹菜实例(是的, 这有点令人困惑 )。

当你在python virtualenv中获得activate脚本时,你基本上说的是 – 设置PATH,这样当我键入python ,它指向virtualenv中的可执行文件。 其他的行动很大程度上是美观的,或者为了能够“停用”虚拟环境而存在。

考虑到这一点,将芹菜安装到虚拟环境中时,setuptools将为您的所有脚本设置path,特别是在您的虚拟环境的python二进制文件中。 现在,inputceleryd初始化脚本 。 您可以通过设置CELERYD环境variables来覆盖要使用的celeryd二进制文件。 你可以这样在/etc/default/celeryd

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

这应该使用你的虚拟环境启动celeryd二进制文件。 希望这有帮助,让我知道,如果你遇到任何打嗝!

注意:对于任何Python脚本都是如此 – 提供了#! 脚本顶部的标题指向你select的Python可执行文件,你可以使用你的virtualenv。