python如何解決指定代碼段超時(shí)程序卡死
python解決指定代碼段超時(shí)程序卡死
最近我寫(xiě)的一個(gè)程序中遇到了解析網(wǎng)頁(yè)的代碼,對(duì)于網(wǎng)頁(yè)信息比較多的可能會(huì)超時(shí),最后解析失敗,程序卡死,于是我就找到了一個(gè)解決辦法
大致模板如下:
import eventlet
eventlet.monkey_patch()
flag_TimeOut = True
with eventlet.Timeout(40, False): ?# 設(shè)置超時(shí)時(shí)間為20秒
?? ?qualified = Qua.getQualifiedRate(all_url)
?? ?isPass = qualified.getPassRate()
?? ?flag_TimeOut = False
if flag_TimeOut:
?? ?print("程序超時(shí)!")注意:主要就是導(dǎo)入eventlet這個(gè)模塊,借助它來(lái)完成超時(shí)處理,具體的函數(shù)介紹可以去搜索下相關(guān)資料,這里主要提供一個(gè)方法。
python程序運(yùn)行超過(guò)時(shí)長(zhǎng)強(qiáng)制退出
python程序運(yùn)行超過(guò)時(shí)長(zhǎng)強(qiáng)制退出方式,防止程序卡死;
主要兩種方式:
1、程序內(nèi)部設(shè)置時(shí)長(zhǎng),超過(guò)退出
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#導(dǎo)入eventlet這個(gè)模塊
eventlet.monkey_patch()#必須加這條代碼
with eventlet.Timeout(2,False):#設(shè)置超時(shí)時(shí)間為2秒
time.sleep(4)
print('沒(méi)有跳過(guò)這條輸出')
print('跳過(guò)了輸出')func_timeout
from func_timeout import func_set_timeout
@func_set_timeout(5) # 設(shè)定函數(shù)執(zhí)行時(shí)間
def task():
print('開(kāi)始運(yùn)行!')
time.sleep(6)
return '執(zhí)行成功,未超時(shí)'
try:
task()
excpet:
print("---")2、程序外部控制,超過(guò)強(qiáng)制退出
通過(guò)jenkins插件build-timeout ,安裝后重啟生效https://updates.jenkins.io/latest/build-timeout.hpi
Absolute多少分鐘沒(méi)有結(jié)束則執(zhí)行動(dòng)作


以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)linux服務(wù)器批量修改密碼并生成execl
這篇文章主要介紹了python實(shí)現(xiàn)linux服務(wù)器批量修改密碼并生成execl示例,需要的朋友可以參考下2014-04-04
10個(gè)Python面試常問(wèn)的問(wèn)題(小結(jié))
這篇文章主要介紹了10個(gè)Python面試常問(wèn)的問(wèn)題(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
使用Pycharm創(chuàng)建一個(gè)Django項(xiàng)目的超詳細(xì)圖文教程
Django是比較經(jīng)典的Python web框架,最近剛好在項(xiàng)目中用到了Django,所以下面這篇文章主要給大家介紹了關(guān)于使用Pycharm創(chuàng)建一個(gè)Django項(xiàng)目的超詳細(xì)圖文教程,文中介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
Python數(shù)據(jù)類型相互轉(zhuǎn)換
當(dāng)涉及數(shù)據(jù)類型轉(zhuǎn)換時(shí),Python提供了多種內(nèi)置函數(shù)來(lái)執(zhí)行不同類型之間的轉(zhuǎn)換,本文主要介紹了Python數(shù)據(jù)類型相互轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
pytorch動(dòng)態(tài)網(wǎng)絡(luò)以及權(quán)重共享實(shí)例
今天小編就為大家分享一篇pytorch動(dòng)態(tài)網(wǎng)絡(luò)以及權(quán)重共享實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
python中 chr unichr ord函數(shù)的實(shí)例詳解
這篇文章主要介紹了python中 chr unichr ord函數(shù)的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-08-08
centos+nginx+uwsgi+Django實(shí)現(xiàn)IP+port訪問(wèn)服務(wù)器
這篇文章主要介紹了centos+nginx+uwsgi+Django實(shí)現(xiàn)IP+port訪問(wèn)服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Python獲取和設(shè)置代理的動(dòng)態(tài)IP的方式
在網(wǎng)絡(luò)世界中,代理和動(dòng)態(tài)IP是非常常見(jiàn)的概念,尤其對(duì)于需要大規(guī)模訪問(wèn)網(wǎng)站或者需要隱藏真實(shí)IP地址的應(yīng)用程序來(lái)說(shuō),更是必不可少的工具,本文將給大家介紹如何使用編程技術(shù)來(lái)實(shí)現(xiàn)動(dòng)態(tài)IP的設(shè)置和管理,需要的朋友可以參考下2024-05-05

