最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 定時修改數(shù)據(jù)庫的示例代碼

 更新時間:2018年04月08日 09:22:00   作者:熔遁丶螺旋手里劍  
這篇文章主要介紹了python 定時修改數(shù)據(jù)庫的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

當(dāng)需要定時修改數(shù)據(jù)庫時,一般我們都選擇起一個定時進(jìn)程去改庫。如果將這種定時任務(wù)寫入業(yè)務(wù)中,寫成一個接口呢,定時進(jìn)程顯得有些不太合適?如果需要定時修改100次數(shù)據(jù)庫,常規(guī)做法會啟動100個進(jìn)程,雖然這種進(jìn)程非常輕量級,但還是會感覺不爽。實際上我們可以使用threading.Timer創(chuàng)建相應(yīng)的線程來執(zhí)行改庫操作,思路也比較簡單。

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

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

代碼如下

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from model import Table
from handler.base_handler import BaseHandler
from threading import Timer
import datetime


class TimeHandler(BaseHandler):
  def do_action(self):
    update_time = "2018-04-07 18: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

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

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python使用win32com.client的方法示例

    Python使用win32com.client的方法示例

    本文主要介紹了Python使用win32com.client的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python中的文件打開與關(guān)閉操作命令介紹

    python中的文件打開與關(guān)閉操作命令介紹

    下面小編就為大家分享一篇python中的文件打開與關(guān)閉操作命令介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python mplfinance庫繪制金融圖表實現(xiàn)數(shù)據(jù)可視化實例探究

    Python mplfinance庫繪制金融圖表實現(xiàn)數(shù)據(jù)可視化實例探究

    mplfinance(Matplotlib Finance),它是基于Matplotlib的庫,專門用于創(chuàng)建金融圖表和交互式金融數(shù)據(jù)可視化,本文將深入介紹?mplfinance,包括其基本概念、功能特性以及如何使用示例代碼創(chuàng)建各種金融圖表
    2024-01-01
  • python3跳出一個循環(huán)的實例操作

    python3跳出一個循環(huán)的實例操作

    在本篇內(nèi)容里小編給大家整理的是關(guān)于python3跳出一個循環(huán)的實例操作內(nèi)容,有需要的朋友們可以參考下。
    2020-08-08
  • Httprunner簡介、安裝及基本使用教程

    Httprunner簡介、安裝及基本使用教程

    httprunner是一款面向 HTTP(S) 協(xié)議的通用測試框架。只需編寫維護(hù)一份 YAML/JSON 腳本,即可實現(xiàn)自動化測試、性能測試、線上監(jiān)控、持續(xù)集成等多種測試需求,本文給大家介紹Httprunner安裝使用教程,感興趣的朋友一起看看吧
    2022-02-02
  • PyCharm 2020 激活到 2100 年的教程

    PyCharm 2020 激活到 2100 年的教程

    這篇文章主要介紹了PyCharm 2020 激活到 2100 年,本文圖文并茂給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 一文詳解Python中的Map,Filter和Reduce函數(shù)

    一文詳解Python中的Map,Filter和Reduce函數(shù)

    這篇文章主要介紹了一文詳解Python中的Map,Filter和Reduce函數(shù),本文重點介紹Python中的三個特殊函數(shù)Map,Filter和Reduce,以及如何使用它們進(jìn)行代碼編程
    2022-08-08
  • python的sys.path模塊路徑添加方式

    python的sys.path模塊路徑添加方式

    這篇文章主要介紹了python的sys.path模塊路徑添加方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python持續(xù)監(jiān)聽文件變化代碼實例

    Python持續(xù)監(jiān)聽文件變化代碼實例

    這篇文章主要介紹了Python持續(xù)監(jiān)聽文件變化代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • python內(nèi)存管理機(jī)制原理詳解

    python內(nèi)存管理機(jī)制原理詳解

    這篇文章主要介紹了python內(nèi)存管理機(jī)制原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08

最新評論

开平市| 通州市| 光山县| 德州市| 齐河县| 探索| 玛曲县| 汕尾市| 抚松县| 治多县| 松潘县| 宿州市| 贵州省| 绥中县| 桂林市| 萝北县| 沙田区| 桑植县| 襄城县| 祥云县| 平凉市| 松滋市| 剑川县| 布尔津县| 司法| 巴南区| 贡嘎县| 山阳县| 航空| 乳山市| 瑞丽市| 民乐县| 泽普县| 长垣县| 千阳县| 承德市| 长丰县| 西乌珠穆沁旗| 讷河市| 安徽省| 五寨县|