制作死线程的副本

时间:2013-06-12 16:15:11

标签: multithreading python-2.7

我有一个继承threading.thread的类。在初始化线程对象的守护进程中,我定期检查线程状态。如果状态不完整且线程不活动,则意味着执行类似api调用其他服务器的错误。

我的问题是,如果发生这种情况,可以制作线程对象的副本并调用start方法。我曾考虑在原始对象上再次调用run方法,但这会弄乱守护进程工作流。

任何想法都非常感谢!

C

1 个答案:

答案 0 :(得分:1)

在守护进程中放置一个无限循环,如果出错,请检查isAlive()/ is_alive()方法。如果它刚刚使用相同的值启动一个新对象。

解决问题的另一种方法是捕获线程对象中的实际问题,并在那里处理问题。我假设你的run()方法有一个循环。只需将循环中的所有内容放在try / except子句中,该子句将重新初始化您正在执行的任何操作以检查其他服务器。

这样的事情:

def run(self):
    while 1:
        try:
            if not server.isconnected():
                server.connect()

            server.getsomeinfo()
        except server.error as x:
            server.disconnect()

        time.sleep(1)

只要server.error类型出错,它就会重新连接。您可以使解决方案更漂亮,并在重试之前添加一些间隔等。我已经完成了这个并且它完美地工作。