我正在用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