Python 最佳实践:监控流程

Python 最佳实践:监控流程,python,python-2.7,Python,Python 2.7,我想知道什么样的最佳实践解决方案可以持续监控和重新启动流程,因为有多种方法可以做到这一点 其他信息: 我有一个unix程序,它使用多个进程来工作。有一个主进程,它总是先启动,不停止程序就不可能死亡或终止 然后我生成了多个“模块”流程,它们负责一些工作,并通过主流程进行通信。这些模块有时会因为异常而死亡,因为它是一个外部程序,我无法解决问题,所以如果它们死亡,我必须重新启动它们 我制作了一个程序来检查是否有任何模块死机并重新启动它们,但我需要手动运行它。我的程序检查模块的pid文件是否存在,以及它

我想知道什么样的最佳实践解决方案可以持续监控和重新启动流程,因为有多种方法可以做到这一点

其他信息: 我有一个unix程序,它使用多个进程来工作。有一个主进程,它总是先启动,不停止程序就不可能死亡或终止

然后我生成了多个“模块”流程,它们负责一些工作,并通过主流程进行通信。这些模块有时会因为异常而死亡,因为它是一个外部程序,我无法解决问题,所以如果它们死亡,我必须重新启动它们

我制作了一个程序来检查是否有任何模块死机并重新启动它们,但我需要手动运行它。我的程序检查模块的pid文件是否存在,以及它们是否在特定的tcp端口上侦听。如果pid文件不存在或套接字无法建立连接,则会重新启动模块

到目前为止,我的想法是:

  • Cron作业,每分钟运行一次检查,并重新启动所有死机模块。(有点过分了,因为他们死得不那么频繁)
  • 后台运行的守护进程,启动模块并在模块死亡时接收通知,因此不必经常检查它们。(信号,操作系统等待)
如果我使用守护进程方法,我应该如何通过接口与守护进程通信?(套接字,或者如果守护进程接收到特定信号,则可能读取的文件)

通常我会选择守护进程,因为它似乎是尽快重新启动模块的最佳实践方法(cron每分钟只运行一次),但我想从经验丰富的用户那里得到一些意见。(我以前从未做过这样的事,问别人不会伤害任何人:D)

如果这些问题在其他地方得到回答,我很抱歉,但我找不到任何相关问题


另外,如果我忘了什么,或者您需要更多信息,请随时询问。:)

我将调查作为专用监控框架的一部分运行监控流程。这是一个例子,当然还有其他例子

这样做的好处是提供了其他可能有用的功能,如电子邮件警报和分析。根据我的经验,您应该能够在不进行太多修改的情况下使用现有程序,并且如果这是一个问题,那么它本身使用的系统资源也很少。

可能的解决方案: