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

Python腳本實(shí)現(xiàn)定時任務(wù)的最佳方法

 更新時間:2022年05月19日 15:41:17   作者:任識算法  
我們在日常工作中,常常會用到需要周期性執(zhí)行的任務(wù),下面這篇文章主要給大家介紹了關(guān)于Python腳本實(shí)現(xiàn)定時任務(wù)的最佳方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在日常工作中,常常需要周期性地執(zhí)行某些任務(wù),常用的方式是采用 Linux 系統(tǒng)自帶的 crond 結(jié)合命令行實(shí)現(xiàn),但最近卻遇到了一個讓人頭大的問題。

問題描述

一個包含cx_Oracle的python文件,直接在linux下使用python命令可以運(yùn)行,但是設(shè)置crontab定時任務(wù)會報錯如下:

cx_Oracle.DatabaseError:

 DPI-1047: 64-bit Oracle Client library cannot be loaded: 

 "libclntsh.so: cannot open shared object file: No such file or directory". 

 See https://oracle.github.io/odpi/doc/installation.html#linux for help

折騰半天,才找到問題的根源,原來crontab進(jìn)程執(zhí)行shell腳本時不會自動加載用戶目錄下的.profile文件,無法正常使用自定義的環(huán)境變量,所以就找不到oracle相關(guān)的庫,報錯了。。。

解決方案

直接使用Python腳本實(shí)現(xiàn)定時任務(wù),實(shí)現(xiàn)方式有很多:

  • 利用while True: + sleep()實(shí)現(xiàn)定時任務(wù)
  • 使用Timeloop庫運(yùn)行定時任務(wù)
  • 利用threading.Timer實(shí)現(xiàn)定時任務(wù)
  • 利用內(nèi)置模塊sched實(shí)現(xiàn)定時任務(wù)
  • 利用調(diào)度模塊schedule實(shí)現(xiàn)定時任務(wù)
  • 利用任務(wù)框架APScheduler實(shí)現(xiàn)定時任務(wù)
  • 使用分布式消息系統(tǒng)Celery實(shí)現(xiàn)定時任務(wù)
  • 使用數(shù)據(jù)流工具Apache Airflow實(shí)現(xiàn)定時任務(wù)

下面給大家展示一種任同學(xué)認(rèn)為最好用的實(shí)現(xiàn)方式:利用調(diào)度模塊schedule實(shí)現(xiàn)定時任務(wù)。

import schedule
import time

def job():
    print("I'm working...")

# 每十分鐘執(zhí)行任務(wù)
schedule.every(10).minutes.do(job)
# 每個小時執(zhí)行任務(wù)
schedule.every().hour.do(job)
# 每天的10:30執(zhí)行任務(wù)
schedule.every().day.at("10:30").do(job)
# 每個月執(zhí)行任務(wù)
schedule.every().monday.do(job)
# 每個星期三的13:15分執(zhí)行任務(wù)
schedule.every().wednesday.at("13:15").do(job)
# 每分鐘的第17秒執(zhí)行任務(wù)
schedule.every().minute.at(":17").do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

可以看到,從月到秒的配置,上面的例子都覆蓋到了。

如果你想只運(yùn)行一次任務(wù)的話,可以這么配:

import schedule
import time

def job_that_executes_once():
    # 此處編寫的任務(wù)只會執(zhí)行一次...
    return schedule.CancelJob

schedule.every().day.at('22:30').do(job_that_executes_once)

while True:
    schedule.run_pending()
    time.sleep(1)

如果你有參數(shù)需要傳遞給作業(yè)去執(zhí)行,可以這么做:

import schedule

def greet(name):
    print('Hello', name)

# do() 將額外的參數(shù)傳遞給job函數(shù)
schedule.every(2).seconds.do(greet, name='Alice')
schedule.every(4).seconds.do(greet, name='Bob')

如果你需要讓某個定時任務(wù)到某個時間截止,可以這么做:

import schedule
from datetime import datetime, timedelta, time

def job():
    print('Boo')

# 每個小時運(yùn)行作業(yè),18:30后停止
schedule.every(1).hours.until("18:30").do(job)

# 每個小時運(yùn)行作業(yè),2030-01-01 18:33 today
schedule.every(1).hours.until("2030-01-01 18:33").do(job)

# 每個小時運(yùn)行作業(yè),8個小時后停止
schedule.every(1).hours.until(timedelta(hours=8)).do(job)

# 每個小時運(yùn)行作業(yè),11:32:42后停止
schedule.every(1).hours.until(time(11, 33, 42)).do(job)

# 每個小時運(yùn)行作業(yè),2020-5-17 11:36:20后停止
schedule.every(1).hours.until(datetime(2020, 5, 17, 11, 36, 20)).do(job)

怎么樣?是不是特好用!

總結(jié)

到此這篇關(guān)于Python腳本實(shí)現(xiàn)定時任務(wù)的最佳方法的文章就介紹到這了,更多相關(guān)Python實(shí)現(xiàn)定時任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 八大排序算法的Python實(shí)現(xiàn)

    八大排序算法的Python實(shí)現(xiàn)

    這篇文章主要介紹了八大排序算法的Python實(shí)現(xiàn),對八大排序算法進(jìn)行詳細(xì)描述和代碼實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • Django項(xiàng)目中使用JWT的實(shí)現(xiàn)代碼

    Django項(xiàng)目中使用JWT的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Django項(xiàng)目中使用JWT的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 用 Python 元類的特性實(shí)現(xiàn) ORM 框架

    用 Python 元類的特性實(shí)現(xiàn) ORM 框架

    利用 Python 元類的特性實(shí)現(xiàn) ORM 框架的 insert 功能,通過操作類對象,對數(shù)據(jù)表進(jìn)行數(shù)據(jù)增加操作。由于 ORM 比較復(fù)雜,也不要重復(fù)造輪子,就完成一個 insert 相類似的ORM,理解其中的道理即可。
    2021-05-05
  • pandas?如何將字符串映射為數(shù)字

    pandas?如何將字符串映射為數(shù)字

    這篇文章主要介紹了pandas?如何將字符串映射為數(shù)字,具有很好的參考價值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Pandas sample隨機(jī)抽樣的實(shí)現(xiàn)

    Pandas sample隨機(jī)抽樣的實(shí)現(xiàn)

    隨機(jī)抽樣,是統(tǒng)計(jì)學(xué)中常用的一種方法,本文主要介紹了Pandas sample隨機(jī)抽樣的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 一文讀懂python Scrapy爬蟲框架

    一文讀懂python Scrapy爬蟲框架

    這篇文章主要介紹了一文讀懂python Scrapy爬蟲框架的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • Python如何使用Selenium WebDriver模擬用戶操作

    Python如何使用Selenium WebDriver模擬用戶操作

    這篇文章主要為大家詳細(xì)介紹了如何使用Selenium WebDriver來模擬用戶操作,以規(guī)避這些驗(yàn)證機(jī)制,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2025-04-04
  • python利用wx實(shí)現(xiàn)界面按鈕和按鈕監(jiān)聽和字體改變的方法

    python利用wx實(shí)現(xiàn)界面按鈕和按鈕監(jiān)聽和字體改變的方法

    今天小編就為大家分享一篇python利用wx實(shí)現(xiàn)界面按鈕和按鈕監(jiān)聽和字體改變的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python讀取幾個G的csv文件方法

    python讀取幾個G的csv文件方法

    今天小編就為大家分享一篇python讀取幾個G的csv文件方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python對二維數(shù)組賦值問題

    python對二維數(shù)組賦值問題

    這篇文章主要介紹了python對二維數(shù)組賦值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評論

辰溪县| 棋牌| 肇东市| 广宗县| 海淀区| 广宗县| 靖远县| 汽车| 淮安市| 庆元县| 南昌市| 台前县| 威宁| 察雅县| 日照市| 广西| 于都县| 玉田县| 柘城县| 定西市| 杭锦旗| 浠水县| 尼勒克县| 田阳县| 望都县| 克山县| 新沂市| 象山县| 淮南市| 墨玉县| 普定县| 万山特区| 梁河县| 南丰县| 翼城县| 南投市| 桃源县| 武邑县| 黄大仙区| 东光县| 天门市|