Py学习  »  Python

[精华] python 捕捉退出事件

Py站长 • 9 年前 • 3679 次点击  

最近写了个python脚本,在服务器上运行,经常莫名其妙的退出,也不知道原因,后面查了资料得到下面两个方法去捕捉退出的发生,一个是捕捉kill信号,另一个是注册atexit函数 例子:

import os  
import sys  
import time  
import atexit  
import signal  
import traceback

def term_sig_handler(signum, frame):  
    print 'catched singal: %d' % signum  
    sys.exit()

@atexit.register  
def atexit_fun():  
    print 'i am exit, stack track:'

    exc_type, exc_value, exc_tb = sys.exc_info()  
    traceback.print_exception(exc_type, exc_value, exc_tb)

if __name__ == '__main__':  
    # catch term signal  
    signal.signal(signal.SIGTERM, term_sig_handler)  
    signal.signal(signal.SIGINT, term_sig_handler)  
    while True:  
        print 'hello'  
        time.sleep(3)

输出

hello  
hello  
hello  
hello  
hello  
hello  
hello  
catched singal: 15  
i am exit, stack track: None
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/1053
 
3679 次点击