from time import time, sleepimport signal# 模拟要删除5条数据,中间有超时的i = 5# 超时后执行的方法def timeout_handler(signal, frame):# 引发异常raise TimeoutError("删除第" + str(i) + "条,超时!")# 或者执行其他操作,不往外抛异常(超时的函数不会被终止,会继续往下执行;一般只记录一下日志)# def timeout_handler(signal,frame):# print("--删除第"+str(i)+"条,超时!--")signal.signal(signal.SIGALRM, timeout_handler)def remDate():# 设置超时时间signal.alarm(1)print("准备删除第" + str(i) + "条")if i % 2 == 0:sleep(1) # 休眠1秒,模拟删除操作超时return "删除第" + str(i) + "条,成功!"while i > 0:try:print(remDate())except Exception as e:print("超时 + ", e)print("----------------------------------------------")i = i - 1
抛异常的运行结果:
不抛异常的运行结果: