我正在用 Python 编写一个 IRC 机器人,由于它的 alpha 性质,它可能会遇到意外错误并退出。
有什么技巧可以让程序再次运行?
请您参考如下方法:
可以通过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
