首先,我将指出这是管理长时间运行的过程(LRP)的 一种 方法-实际上并不是任何事情。
以我的经验,最好的产品来自专注于您要处理的特定问题,同时将支持技术委托给其他图书馆。在这种情况下,我指的是后台进程(双叉技术),监视和日志重定向的行为。
我最喜欢的解决方案是http://supervisord.org/
使用像supervisor这样的系统,您基本上编写了一个常规的python脚本,该脚本在陷入“无限”循环的同时执行任务。
#!/usr/bin/python
import sys
import time
def main_loop():
while 1:
# do your stuff...
time.sleep(0.1)
if __name__ == '__main__':
try:
main_loop()
except KeyboardInterrupt:
print >> sys.stderr, '\nExiting by user request.\n'
sys.exit(0)
这样编写脚本可以简化开发和调试过程(您可以在终端中轻松启动/停止它,并在事件发生时观察日志输出)。投入生产时,您只需定义一个调用脚本的主管配置(以下是定义“程序”的 示例,其中许多是可选的:http : //supervisord.org/configuration.html#program -x-section- example)。
监事有 一堆 的配置选项,所以我不会一一列举,但我会说,它专门解决你所描述的问题: