Python解决指定代码段超时程序卡死

Elena
Elena
发布时间:2026-10-16 | 3人浏览过
原创

本文介绍Python中解决指定代码段运行超时导致程序卡死的两种主要方法。第一种利用eventlet模块进行内部超时控制,通过monkey_patch和Timeout上下文管理器实现;第二种使用func_timeout库装饰器限制函数执行时间。此外还提及通过jenkins插件进行外部控制的方式,帮助开发者防止因网页解析等耗时操作导致的程序阻塞。

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程序运行超过时长强制退出

为了防止程序因长时间运行而卡死,可以采取在指定时长后强制退出的策略;

主要包含以下两种实现方式:

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来实现,安装完成后重启jenkins服务即可生效,插件下载地址为https://updates.jenkins.io/latest/build-timeout.hpi

  • 设置Absolute多少分钟没有结束则执行动作

以上为个人经验分享,希望能为大家提供参考,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表