from time import time, sleep
import 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
抛异常的运行结果:
不抛异常的运行结果: