社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

[精华] python 捕捉退出事件

Py站长 • 10 年前 • 3942 次点击  

最近写了个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
 
3942 次点击