Python多进程重启崩溃的进程
我想创建一些工作进程,如果它们因为出现错误而崩溃,我希望它们能自动重启。除了在多进程模块里用到的is_alive方法,我找不到其他的方法来实现这个。
这就意味着我需要在程序休眠后,检查所有正在运行的进程,看看它们是否还活着。这实际上就是一个忙碌的循环,我在想有没有更好的办法,让我的程序在任何一个工作进程崩溃时能自动唤醒。一旦唤醒,我想记录下导致程序崩溃的错误,并启动另一个进程。
3 个回答
1
你可以把你的工作进程放在一个尝试/捕获的结构里,也就是用try/except来包裹。在捕获到错误的时候,可以先把错误信息发送到一个管道里,然后再抛出这个错误。当然,轮询其实也没什么不好,而且它更简单。
1
如果你在使用类似Unix的系统,你的主程序可以通过设置一个信号处理器来接收到关于“死去的子进程”的通知。你可以查阅一下你操作系统的文档,了解一下signal()
这个函数,特别是SIGCHLD
这个信号。我不太记得Windows是否支持SIGCHLD,因为它对POSIX信号的支持非常有限。
2
定期检查子进程是否还在运行是个不错的主意,因为这样做的开销很小,而且你不需要频繁地检查。
这个(类似的)问题的第一个回答里有一个Python的代码示例: Python中的多服务器监控/自动重启器