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

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

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

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

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

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

代碼如下

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

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

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

相關(guān)文章

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

    Python使用win32com.client的方法示例

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

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

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

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

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

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

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

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

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

    PyCharm 2020 激活到 2100 年的教程

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

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

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

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

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

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

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

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

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

最新評論

共和县| 长寿区| 儋州市| 津市市| 香河县| 静宁县| 玉龙| 长沙县| 水富县| 阳信县| 卫辉市| 察雅县| 德惠市| 额敏县| 阿荣旗| 湖南省| 宁远县| 五家渠市| 新晃| 崇文区| 沾化县| 五大连池市| 化隆| 龙口市| 罗田县| 缙云县| 曲沃县| 古田县| 蛟河市| 五莲县| 行唐县| 安塞县| 兰溪市| 昂仁县| 鄂尔多斯市| 景洪市| 阿巴嘎旗| 灌南县| 宿松县| 明溪县| 筠连县|