我喜欢这样做
def exitHandler(self, *args):
self.stopThreads()
sys.exit(2)
我在我的自行运行(使用守护程序)
^{pr2}$在self.stop线程()有时需要一段时间才能完成。Im正在停止由这些线程启动的子进程。当多次调用信号处理程序时,我会收到如下错误消息:
Exception SystemExit: 2 in <bound method Popen.__del__ of <subprocess.Popen object at 0x929d10c>> ignored
一切都很好,即使有被忽略的异常,我的所有进程和线程都会按其应有的方式完成。我很好奇我做错了什么,以及如何消除被忽略的异常错误。在
问题似乎是}的工作不可重入,而第二个SIGTERM会导致其中一个或两个被调用。在
stopThreads()
或{现在,您不能阻止SIGTERM被多次传递,但是您可以修改您的逻辑以适应它。通常(通常也是正确的)建议是重构信号处理程序以简单地设置一个标志,然后在主循环中检查该标志:
相关问题 更多 >
编程相关推荐