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("程序出異常了所以需要暫停當(dāng)前進程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("程序出異常了所以需要暫停當(dāng)前進程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當(dāng)作保存處理結(jié)果的一個文檔,因為異常了我們手動處理下這個文檔,給這個里面加上如果程序沒有異常正常返回的結(jié)果,生產(chǎn)環(huán)境可能是數(shù)據(jù)庫保存這些數(shù)據(jù),然后在讀取
上面的進程ID是9016
我們可以在cmd窗口直接連接到這個進程,然后讓程序啟動起來
執(zhí)行結(jié)果
程序啟動時間: 2022-05-26 11:15:53.337709
程序出異常了所以需要暫停當(dāng)前進程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)文章
python機器學(xué)習(xí)實現(xiàn)決策樹
這篇文章主要為大家詳細介紹了python機器學(xué)習(xí)實現(xiàn)決策樹,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-11-11淺談Keras中shuffle和validation_split的順序
這篇文章主要介紹了淺談Keras中shuffle和validation_split的順序,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python Serial串口基本操作(收發(fā)數(shù)據(jù))
這篇文章主要介紹了Python Serial串口基本操作(收發(fā)數(shù)據(jù)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11