如何在Python中意外退出后重新运行程序?
我正在用Python写一个IRC机器人,因为它还在测试阶段,所以可能会出现一些意想不到的错误,然后程序就会退出。
我可以用什么方法让这个程序重新运行呢?
3 个回答
0
最简单的方法就是在程序出错的时候,捕捉到这些错误,然后关闭旧的程序,再打开一个新的实例。
不过要注意,这种方法并不总是有效,有时候程序会直接停止工作,但并不会报错。
1
你可以使用subprocess这个模块来创建一个“包装器”。这个模块会把你的应用程序当作一个子进程来运行,并且可以跟踪它的执行情况。
5
你可以使用 sys.exit()
来表示程序异常退出(通常情况下,如果出错会返回1)。
你的Python脚本可能看起来像这样:
import sys
def main():
# ...
if __name__ == '__main__':
try:
main()
except Exception as e:
print >> sys.stderr, e
sys.exit(1)
else:
sys.exit()
如果出现错误,你可以再次调用 main()
,但程序可能已经不在一个可以正常工作的状态了。
因此,启动一个新的进程来运行程序可能更安全。
所以你可以写一个脚本来调用这个Python脚本,等它执行完后获取返回值,如果返回值不是0(默认情况下 sys.exit()
返回的值),就重新启动它。
这可能看起来像这样:
import subprocess
command = 'thescript'
args = ['arg1', 'arg2']
while True:
ret_code = subprocess.call([command] + args)
if ret_code == 0:
break