Python 定時修改數據庫
當需要定時修改數據庫時,一般我們都選擇起一個定時進程去改庫。如果將這種定時任務寫入業務中,寫成一個接口呢,定時進程顯得有些不太合適?如果需要定時修改100次數據庫,常規做法會啟動100個進程,雖然這種進程非常輕量級,但還是會感覺不爽。實際上我們可以使用threading.Timer創建相應的線程來執行改庫操作,思路也比較簡單。
1.傳入執行改庫操作的時間update_time,用update_time和當前時間相減法,得到距離改庫操作還有多少時間time_delay。求兩個標準時間格式字符串的時間差可以使用datetime.datetime.strptime()來格式化時間,格式化后的時間可以直接相減法,對結果執行.seconds()就可以轉化成秒
2.將改庫操作封裝成方法update(),然后將update和時間差傳入threading.Timer創建的線程,用法為threading.Timer(interval,function,args=[],kwargs={})創建線程實例,interval為延遲執行的時間,單位是秒,然后,start()執行。Timer是非阻塞的,可以創建出多個線程互不影響。
可以將update_time改為前端傳入的參數,就可以在該時間執行改庫操作了。當時遇到了一個小坑,就是改庫操作沒有生效,原因是沒加最后一行的commit()。本來改庫的commit生效是寫在基類BaseHandler重的,但是這里的update()在Timer線程中執行,屬于異步操作,需要在線程中執行commit()使改動生效。
這種借助Timer定時執行的方法比傳統的定時進程更輕量,也更簡單,但是也有著明顯的缺點。當服務關閉時,所有的定時線程也就隨著主進程一起銷毀,所有線程都能成功執行的前提條件是服務必須穩定,不能重啟。如果想要重啟服務,就需要想辦法將未完成的任務落盤(比如寫到數據庫中),然后啟動服務時讀取之前未完成的任務重新創建定時線程。
以上內容為大家介紹Python定時修改數據庫,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://www.mobiletrain.org/

相關推薦HOT
更多>>
python按行讀取文件的方法比較
python按行讀取文件的方法比較1、read方法默認會把文件的所有內容一次性讀取到內存。如果文件太大,對內存的占用會非常嚴重2、readline方法,re...詳情>>
2023-11-08 18:22:27
python變量賦值的注意點
1、變量賦值Python中的變量不需要聲明,變量的賦值操作既是變量聲明和定義的過程。每個變量在內存中創建,都包括變量的標識,名稱和數據這些信...詳情>>
2023-11-08 18:05:38
pythonTKinter的消息傳遞機制
pythonTKinter的消息傳遞機制1、自動發送事件/消息。2、系統負責將消息發送到隊列。3、綁定/設置相關組件。4、后端自動選擇感興趣的事件并做出...詳情>>
2023-11-08 17:04:09
python怎么做加法運算
python解釋器本身就是一個天然的計算器,交互模式下輸入要計算的數字,會直接得到結果,如下>>>33+5689>>>42+89131>>>28+0.828.8>>>68+57125>>>...詳情>>
2023-11-08 14:18:09熱門推薦
技術干貨






