麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Python 定時修改數據庫

Python 定時修改數據庫

來源:千鋒教育
發布人:xqq
時間: 2023-11-06 06:03:51 1699221831

當需要定時修改數據庫時,一般我們都選擇起一個定時進程去改庫。如果將這種定時任務寫入業務中,寫成一個接口呢,定時進程顯得有些不太合適?如果需要定時修改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是非阻塞的,可以創建出多個線程互不影響。

代碼如下

#!/usr/bin/envpython3

#-*-coding:utf-8-*-

frommodelimportTable

fromhandler.base_handlerimportBaseHandler

fromthreadingimportTimer

importdatetime

classTimeHandler(BaseHandler):

defdo_action(self):

update_time="2018-04-0718:00:00"

ads_id="test_1"

t_online=datetime.datetime.strptime(update_time,'%Y-%m-%d%H:%M:%S')

now=datetime.datetime.now().strftime('%Y-%m-%d%H:%M:%S')

t_now=datetime.datetime.strptime(now,'%Y-%m-%d%H:%M:%S')

time_delay=(t_online-t_now).seconds

t1=Timer(time_delay,self.update,(ads_id,))

t1.start()

self.result="success"

return

defupdate(self,ads_id):

self.db.dsp.query(Table).filter(Table.ads_id==ads_id).update({Table.is_del:0})

self.db.dsp.commit()

可以將update_time改為前端傳入的參數,就可以在該時間執行改庫操作了。當時遇到了一個小坑,就是改庫操作沒有生效,原因是沒加最后一行的commit()。本來改庫的commit生效是寫在基類BaseHandler重的,但是這里的update()在Timer線程中執行,屬于異步操作,需要在線程中執行commit()使改動生效。

這種借助Timer定時執行的方法比傳統的定時進程更輕量,也更簡單,但是也有著明顯的缺點。當服務關閉時,所有的定時線程也就隨著主進程一起銷毀,所有線程都能成功執行的前提條件是服務必須穩定,不能重啟。如果想要重啟服務,就需要想辦法將未完成的任務落盤(比如寫到數據庫中),然后啟動服務時讀取之前未完成的任務重新創建定時線程。

以上內容為大家介紹Python定時修改數據庫,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://www.dietsnews.net/


tags: python培訓
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 久久免费视频一区| 99re在线视频免费观看| 波多野结衣和黑人 | 亚洲神级电影国语版| 大陆老太交xxxxⅹhd| 成年女人毛片免费视频| 在线播放国产不卡免费视频| 97se色综合一区二区二区| 男孩子和男孩子在一起do| 午夜精品久久久久久久99热| 欧美日韩三级在线观看| 美女扒开尿囗给男生桶爽| 日本三人交xxx69视频| 国产卡一卡二卡三卡四| 韩国色三级伦不卡高清在线观看| 乱淫片免费影院观看| 日本免费网站在线观看| 免费高清理伦片在线观看| 免费看日b视频| 日本电影100禁| 韩国免费一级片| 成人3d动漫网址在线观看| 美国式禁忌4桥矿超棒| 日本卡一卡二新区| 激情交叉点2| 亚洲国产欧美日韩精品一区二区三区 | 国产精品欧美一区二区三区不卡| a级毛片免费完整视频| 337p中国人体啪啪| 天天干天天干天天干| 精品国偷自产在线| 中文字幕在线观看国产| 精品久久久久久久中文字幕 | 欧美黄三级在线观看| 在线观看亚洲视频| 国产欧美一区二区三区视频在线观看| 久久66久这里精品99| 久久精品国产99国产精品澳门| 亚洲国产中文在线视频| 免费看美女部位隐私直播 | 青青国产在线播放|