我正在开发一个python程序,它作为一个守护进程运行,并产生几个不同的长时间运行的线程,可能有单独的睡眠定时器。
我遇到的问题是线程在未知的时间后死亡,我不完全确定为什么或如何诊断问题。我去了(虽然不是最终的解决方案)一个__del__
函数作为一个线程运行作为一个线程,看看可能是什么问题,但我不确定哪些变量可用于确定导致退出的原因。
我没有更接近确定问题的原因,我希望能找到一些帮助。
我的主要运行程序的片段是顶级守护程序进程:
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请求,它就不知道在哪里找到主机并抛出异常。不幸的是,我知道这仍然不确定如何最好地处理这些例外。
答案 0 :(得分:0)
所以我在这里只看到3种可能性:
在任何这些情况下添加一些线程转储锁定如下:
https://stackoverflow.com/a/2569696/3957645
应该显示该线程上发生了什么(或者如果它消失了)。