python如何解決指定代碼段超時(shí)程序卡死
python解決指定代碼段超時(shí)程序卡死
最近我寫的一個(gè)程序中遇到了解析網(wǎng)頁的代碼,對于網(wǎng)頁信息比較多的可能會(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è)模塊,借助它來完成超時(shí)處理,具體的函數(shù)介紹可以去搜索下相關(guān)資料,這里主要提供一個(gè)方法。
python程序運(yùn)行超過時(shí)長強(qiáng)制退出
python程序運(yùn)行超過時(shí)長強(qiáng)制退出方式,防止程序卡死;
主要兩種方式:
1、程序內(nèi)部設(shè)置時(shí)長,超過退出
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('沒有跳過這條輸出') print('跳過了輸出')
func_timeout
from func_timeout import func_set_timeout @func_set_timeout(5) # 設(shè)定函數(shù)執(zhí)行時(shí)間 def task(): print('開始運(yùn)行!') time.sleep(6) return '執(zhí)行成功,未超時(shí)' try: task() excpet: print("---")
2、程序外部控制,超過強(qiáng)制退出
通過jenkins插件build-timeout ,安裝后重啟生效https://updates.jenkins.io/latest/build-timeout.hpi
Absolute
多少分鐘沒有結(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使用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-08Python數(shù)據(jù)類型相互轉(zhuǎn)換
當(dāng)涉及數(shù)據(jù)類型轉(zhuǎn)換時(shí),Python提供了多種內(nèi)置函數(shù)來執(zhí)行不同類型之間的轉(zhuǎn)換,本文主要介紹了Python數(shù)據(jù)類型相互轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09pytorch動(dòng)態(tài)網(wǎng)絡(luò)以及權(quán)重共享實(shí)例
今天小編就為大家分享一篇pytorch動(dòng)態(tài)網(wǎng)絡(luò)以及權(quán)重共享實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01python中 chr unichr ord函數(shù)的實(shí)例詳解
這篇文章主要介紹了python中 chr unichr ord函數(shù)的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-08-08centos+nginx+uwsgi+Django實(shí)現(xiàn)IP+port訪問服務(wù)器
這篇文章主要介紹了centos+nginx+uwsgi+Django實(shí)現(xiàn)IP+port訪問服務(wù)器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Python獲取和設(shè)置代理的動(dòng)態(tài)IP的方式
在網(wǎng)絡(luò)世界中,代理和動(dòng)態(tài)IP是非常常見的概念,尤其對于需要大規(guī)模訪問網(wǎng)站或者需要隱藏真實(shí)IP地址的應(yīng)用程序來說,更是必不可少的工具,本文將給大家介紹如何使用編程技術(shù)來實(shí)現(xiàn)動(dòng)態(tài)IP的設(shè)置和管理,需要的朋友可以參考下2024-05-05