python如何解决指定代码段超时程序卡死
作者:AI_Frank
这篇文章主要介绍了python如何解决指定代码段超时程序卡死,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
python解决指定代码段超时程序卡死
最近我写的一个程序中遇到了解析网页的代码,对于网页信息比较多的可能会超时,最后解析失败,程序卡死,于是我就找到了一个解决办法
大致模板如下:
import eventlet eventlet.monkey_patch() flag_TimeOut = True with eventlet.Timeout(40, False): # 设置超时时间为20秒 qualified = Qua.getQualifiedRate(all_url) isPass = qualified.getPassRate() flag_TimeOut = False if flag_TimeOut: print("程序超时!")
注意:主要就是导入eventlet这个模块,借助它来完成超时处理,具体的函数介绍可以去搜索下相关资料,这里主要提供一个方法。
python程序运行超过时长强制退出
python程序运行超过时长强制退出方式,防止程序卡死;
主要两种方式:
1、程序内部设置时长,超过退出
import datetime import time import datetime starttime = datetime.datetime.now() #long running endtime = datetime.datetime.now() print (endtime – starttime).seconds
import datetime import time t1 = time.time() t1 = time.localtime(t1).tm_hour print(t1) while 1: if time.localtime(time.time()).tm_hour - t1<3: print("@@@@",time.localtime(time.time()).tm_hour) else: print("break") break print("finsh")
import time import eventlet#导入eventlet这个模块 eventlet.monkey_patch()#必须加这条代码 with eventlet.Timeout(2,False):#设置超时时间为2秒 time.sleep(4) print('没有跳过这条输出') print('跳过了输出')
func_timeout
from func_timeout import func_set_timeout @func_set_timeout(5) # 设定函数执行时间 def task(): print('开始运行!') time.sleep(6) return '执行成功,未超时' try: task() excpet: print("---")
2、程序外部控制,超过强制退出
通过jenkins插件build-timeout ,安装后重启生效https://updates.jenkins.io/latest/build-timeout.hpi
Absolute
多少分钟没有结束则执行动作
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。