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

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

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

