长时间运行的Python线程意外退出
我正在开发一个python程序,该程序作为守护进程运行,并生成几个不同的长时间运行线程,这些线程可能具有独立的睡眠计时器 我遇到的问题是,在一段未知的时间后,线程正在消亡,我不完全确定为什么或如何诊断这些问题。我在类中添加了一个长时间运行的Python线程意外退出,python,multithreading,python-3.x,python-multithreading,Python,Multithreading,Python 3.x,Python Multithreading,我正在开发一个python程序,该程序作为守护进程运行,并生成几个不同的长时间运行线程,这些线程可能具有独立的睡眠计时器 我遇到的问题是,在一段未知的时间后,线程正在消亡,我不完全确定为什么或如何诊断这些问题。我在类中添加了一个\uu del\uu函数(虽然不是最终的解决方案),作为线程运行,以查看可能出现的问题,但不确定有哪些变量可用于确定导致退出的原因 我还没有接近确定问题的原因,我希望能找到一些帮助 我的主运行程序(顶层守护进程)的一个片段是: threads = [] sensorFol
\uu del\uu
函数(虽然不是最终的解决方案),作为线程运行,以查看可能出现的问题,但不确定有哪些变量可用于确定导致退出的原因
我还没有接近确定问题的原因,我希望能找到一些帮助
我的主运行程序(顶层守护进程)的一个片段是:
threads = []
sensorFolders = glob.glob(config._baseDir + '28*')
for folder in sensorFolders:
sensorID = os.path.split(folder)[1]
sensor = Sensor().getSensor(sensorID)
threads.append(threading.Thread(target=sensor.startCheckin))
for thread in threads:
thread.start()
for thread in threads:
thread.join()
以及传感器类别的一部分:
def startCheckin(self):
while True:
self.checkSensor()
self.checkinSensor()
self.postTemp()
time.sleep(self._checkinInterval)
我当然可以根据需要添加更多代码,但它的实现相当基本。我只是不确定在这里尝试什么,因为(对于python noob)似乎没有任何明显的迹象表明什么可能导致线程突然关闭
任何帮助都将不胜感激
编辑
问题似乎是,如果网络中断片刻,线程调用url请求,它不知道在哪里找到主机,并抛出异常。不幸的是,知道这一点,我仍然不确定如何最好地处理这些异常。因此,我在这里只看到3种可能性:
应该向您显示该线程上发生了什么(或者它是否消失了)。可能是未处理的异常。添加一些日志记录。在
\uuu del\uu
功能中,我可以打印堆栈跟踪吗?是的<代码>导入回溯。你也可以用try/catch(而不是del)来包装你的startCheckin代码,好吧,我会试试,看看会发生什么,它会消失一段时间……你不会得到任何东西打印的堆栈跟踪?我希望一个未处理的异常会引起一些噪音。此代码中是否有try/except
块?内部检查传感器()
,检查传感器()
,等等。