python程序中斷然后接著中斷代碼繼續(xù)運(yùn)行問題
前言
python通過django,flask框架開發(fā)運(yùn)維管理的時(shí)候,碰到的一個(gè)功能可能涉及很多個(gè)模塊,里面涉及了多個(gè)表數(shù)據(jù),如果前面的運(yùn)行都很不錯(cuò),但是中間一旦報(bào)錯(cuò)了,這就很煩,程序退出了,需要重新再來一遍,數(shù)據(jù)也需要重新清洗。
如果有一個(gè)很好的選擇可以讓程序在在有問題的模塊部位中止,主進(jìn)程一直不退出繼續(xù)保持運(yùn)行狀態(tài),處理好有問題的模塊之后運(yùn)行下面沒問題的模塊即可
import time
import psutil
import datetime,os
pause=psutil.Process(os.getpid())
from jielong import GoodMessage
msg=None
try:
print("程序啟動(dòng)時(shí)間:",datetime.datetime.now())
g=GoodMessage('狗',10)
with open('drink.txt','w+',encoding='gbk') as f:
msg=g.drink(20)
f.write(msg)
except Exception as e:
print("程序出異常了所以需要暫停當(dāng)前進(jìn)程ID是:{}".format(os.getpid()))
pause.suspend()
with open('drink.txt','r+') as f:
msg=f.read()
for i in range(5):
print(f"執(zhí)行時(shí)間是{datetime.datetime.now()}")
print(msg)
time.sleep(2)
運(yùn)行結(jié)果
程序啟動(dòng)時(shí)間: 2022-05-26 11:08:03.661051
執(zhí)行時(shí)間是2022-05-26 11:08:03.663050
動(dòng)物都要喝水,狗每次喝10L水
執(zhí)行時(shí)間是2022-05-26 11:08:05.667317
動(dòng)物都要喝水,狗每次喝10L水
執(zhí)行時(shí)間是2022-05-26 11:08:07.671946
動(dòng)物都要喝水,狗每次喝10L水
執(zhí)行時(shí)間是2022-05-26 11:08:09.677413
動(dòng)物都要喝水,狗每次喝10L水
執(zhí)行時(shí)間是2022-05-26 11:08:11.686922
動(dòng)物都要喝水,狗每次喝10L水
jielong.py
class GoodMessage(object):
def __init__(self,name,age):
self.name=name
self.age=age
def drink(self,vol):
return "動(dòng)物都要喝水,{}每次喝{}L水".format(self.name,10)
下面模擬jielong模塊出錯(cuò)的問題
import time
import psutil
import datetime,os
pause=psutil.Process(os.getpid())
from jielong import GoodMessage
msg=None
try:
print("程序啟動(dòng)時(shí)間:",datetime.datetime.now())
g=GoodMessage('狗',10)
with open('drink.txt','w+',encoding='gbk') as f:
msg=g.drink()
f.write(msg)
except Exception as e:
print("程序出異常了所以需要暫停當(dāng)前進(jìn)程ID是:{}".format(os.getpid()))
pause.suspend()
with open('drink.txt','r+') as f:
msg=f.read()
for i in range(5):
print(f"執(zhí)行時(shí)間是{datetime.datetime.now()}")
print(msg)
time.sleep(2)

可以看出程序已經(jīng)hang住了
此時(shí)的drink.txt文件也已經(jīng)為空了,這里可以把drink.txt當(dāng)作保存處理結(jié)果的一個(gè)文檔,因?yàn)楫惓A宋覀兪謩?dòng)處理下這個(gè)文檔,給這個(gè)里面加上如果程序沒有異常正常返回的結(jié)果,生產(chǎn)環(huán)境可能是數(shù)據(jù)庫保存這些數(shù)據(jù),然后在讀取
上面的進(jìn)程ID是9016
我們可以在cmd窗口直接連接到這個(gè)進(jìn)程,然后讓程序啟動(dòng)起來

執(zhí)行結(jié)果
程序啟動(dòng)時(shí)間: 2022-05-26 11:15:53.337709
程序出異常了所以需要暫停當(dāng)前進(jìn)程ID是:2868
執(zhí)行時(shí)間是2022-05-26 11:17:39.144744
動(dòng)物都要喝水,狗每次喝10L水
執(zhí)行時(shí)間是2022-05-26 11:17:41.154257
動(dòng)物都要喝水,狗每次喝10L水
執(zhí)行時(shí)間是2022-05-26 11:17:43.167452
動(dòng)物都要喝水,狗每次喝10L水
執(zhí)行時(shí)間是2022-05-26 11:17:45.173947
動(dòng)物都要喝水,狗每次喝10L水
執(zhí)行時(shí)間是2022-05-26 11:17:47.183822
動(dòng)物都要喝水,狗每次喝10L水Process finished with exit code 0
可以看出來中斷的程序的確可以繼續(xù)運(yùn)行下去
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
django ObjectDoesNotExist 和 DoesNotExist的用法
這篇文章主要介紹了django ObjectDoesNotExist 和 DoesNotExist的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Django與圖表的數(shù)據(jù)交互的實(shí)現(xiàn)
本文主要介紹了Django與圖表的數(shù)據(jù)交互的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
Python 在OpenCV里實(shí)現(xiàn)仿射變換—坐標(biāo)變換效果
這篇文章主要介紹了Python 在OpenCV里實(shí)現(xiàn)仿射變換—坐標(biāo)變換效果,本文通過一個(gè)例子給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
使用python獲取csv文本的某行或某列數(shù)據(jù)的實(shí)例
下面小編就為大家分享一篇使用python獲取csv文本的某行或某列數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04
使用python開發(fā)一個(gè)可調(diào)用工具的AI智能體
在人工智能時(shí)代,AI Agent憑借其強(qiáng)大的任務(wù)處理能力,逐漸成為開發(fā)人員手中的得力工具,下面我們就來看看如何使用Python打造一個(gè)能夠調(diào)用工具的AI Agent,實(shí)現(xiàn)根據(jù)電腦信息對(duì)電腦配置進(jìn)行專業(yè)評(píng)價(jià)的功能吧2025-07-07

