久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

        手機站
        千鋒教育

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

        千鋒教育

        掃一掃進入千鋒手機站

        領取全套視頻
        千鋒教育

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

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

        python定時修改數據庫

        來源:千鋒教育
        發(fā)布人:xqq
        時間: 2023-11-10 05:53:23 1699566803

        1.傳入執(zhí)行改庫操作的時間update_time,用update_time和當前時間相減法,得到距離改庫操作還有多少時間time_delay。求兩個標準時間格式字符串的時間差可以使用datetime.datetime.strptime()來格式化時間,格式化后的時間可以直接相減法,對結果執(zhí)行.seconds()就可以轉化成秒

        2.將改庫操作封裝成方法update(),然后將update和時間差傳入threading.Timer創(chuàng)建的線程,用法為threading.Timer(interval,function,args=[],kwargs={})創(chuàng)建線程實例,interval為延遲執(zhí)行的時間,單位是秒,然后,start()執(zhí)行。Timer是非阻塞的,可以創(chuàng)建出多個線程互不影響。

        代碼如下

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

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

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


        tags: python培訓
        聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
        10年以上業(yè)內強師集結,手把手帶你蛻變精英
        請您保持通訊暢通,專屬學習老師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
        长岭县| 胶州市| 泰宁县| 赤水市| 清流县| 蛟河市| 那坡县| 旌德县| 旺苍县| 金昌市| 汤阴县| 芒康县| 山阴县| 泰顺县| 兴城市| 九龙城区| 望奎县| 临泉县| 鸡东县| 吴忠市| 龙胜| 惠水县| 炉霍县| 万载县| 托克逊县| 梓潼县| 永泰县| 两当县| 金堂县| 鄯善县| 南川市| 高雄市| 青龙| 右玉县| 南宫市| 濮阳县| 芦溪县| 靖安县| 石林| 加查县| 双城市|