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

Python使用schedule庫實(shí)現(xiàn)任務(wù)定時自動化

 更新時間:2026年04月23日 09:37:25   作者:科雷learning  
在Python的自動化工具庫中,schedule是一個簡潔又強(qiáng)大的存在,無論是定時備份數(shù)據(jù)、周期性抓取網(wǎng)頁,還是定期發(fā)送提醒郵件,schedule庫都能讓我們的代碼按計(jì)劃精準(zhǔn)執(zhí)行,今天我們就深入了解schedule庫的使用,需要的朋友可以參考下

引言

在Python的自動化工具庫中,schedule是一個簡潔又強(qiáng)大的存在。無論是定時備份數(shù)據(jù)、周期性抓取網(wǎng)頁,還是定期發(fā)送提醒郵件,schedule庫都能讓我們的代碼按計(jì)劃精準(zhǔn)執(zhí)行。今天我們就深入了解schedule庫的使用,助我們成為任務(wù)調(diào)度小能手!

schedule庫核心函數(shù)速覽

schedule庫通過極簡的語法,實(shí)現(xiàn)復(fù)雜的定時任務(wù)配置。使用前先通過pip命令安裝schedule庫:pip install schedule

其核心函數(shù)和方法如下:

1. schedule.every():創(chuàng)建基礎(chǔ)調(diào)度任務(wù)

功能:開啟一個新的調(diào)度任務(wù),后續(xù)可鏈?zhǔn)秸{(diào)用時間單位和執(zhí)行函數(shù)。

案例:創(chuàng)建一個每分鐘執(zhí)行一次的任務(wù)框架。

import schedule
# 創(chuàng)建1個調(diào)度任務(wù),默認(rèn)參數(shù)為1
schedule.every()

2. 時間單位設(shè)置函數(shù)

功能:指定任務(wù)執(zhí)行的時間間隔的屬性函數(shù):seconds、minuteshours、days、weeks、monday、tuesday、wednesday、thursday、friday、saturday、sunday

案例:設(shè)置每5分鐘執(zhí)行一次的任務(wù)。

importschedule
# 每5分鐘執(zhí)行一次任務(wù) every函數(shù)參數(shù)填5,后續(xù)跟著minutes,表示每5分鐘
schedule.every(5).minutes.do(task_function)
# 每2小時執(zhí)行一次任務(wù) 
schedule.every(2).hours.do(task_function)
# 每3天執(zhí)行一次任務(wù)
schedule.every(3).days.do(task_function)
# 每周執(zhí)行一次任務(wù)
schedule.every().weeks.do(task_function)
# 每2周執(zhí)行一次任務(wù)
schedule.every(2).weeks.do(task_function)
# 每周1執(zhí)行一次任務(wù)
schedule.every().monday.do(task_function)
# 每周1和周3執(zhí)行一次任務(wù)
schedule.every().monday.wednesday.do(task_function)
#或者分開兩個任務(wù)
schedule.every().monday.do(task_function)
schedule.every().wednesday.do(task_function)

3. at():精準(zhǔn)設(shè)置任務(wù)執(zhí)行的具體時間點(diǎn)

功能:在指定的時間點(diǎn)執(zhí)行任務(wù),常與時間周期函數(shù)(如days()、weeks())結(jié)合使用,支持設(shè)置時、分,格式為HH:MM(24 小時制) 。通過at功能,可以實(shí)現(xiàn) “每天早上 9 點(diǎn)”“每周五下午5點(diǎn)” 等精確的定時需求。

參數(shù):time_str接受一個字符串類型參數(shù),即具體時間點(diǎn),如"09:00"、"17:30" 。tz默認(rèn)為None,默認(rèn)采用當(dāng)前時區(qū)。如果傳入時區(qū)時需要安裝pytz庫。

#每天早上9點(diǎn)執(zhí)行
schedule.every().day.at("09:00").do(task_function)
#每周1早上9點(diǎn)執(zhí)行
schedule.every().monday.at("09:00").do(task_function)
#在東京時區(qū) 每周1早上9點(diǎn)執(zhí)行
schedule.every().monday.at("09:00","Asia/Tokyo").do(task_function)

4. do():指定要執(zhí)行的函數(shù)

功能:關(guān)聯(lián)具體的Python函數(shù),在達(dá)到設(shè)定時間時執(zhí)行。

案例:執(zhí)行打印當(dāng)前時間的函數(shù)

import schedule
import time
def print_current_time():
    print(time.strftime("%Y-%m-%d %H:%M:%S"))
# 每10秒打印一次當(dāng)前時間
schedule.every(10).seconds.do(print_current_time)

5. run_pending():檢查并執(zhí)行待處理任務(wù)

功能:檢查是否有到期任務(wù),若有則執(zhí)行,需在循環(huán)中持續(xù)調(diào)用。

案例:持續(xù)運(yùn)行任務(wù)調(diào)度循環(huán)

import schedule
import time
def task():
    print("任務(wù)執(zhí)行!")
schedule.every(2).seconds.do(task)
while True:
    schedule.run_pending()

6. clear():清除所有任務(wù)

功能:刪除所有已設(shè)置的調(diào)度任務(wù)。

案例:清空所有定時任務(wù)

import schedule
# 設(shè)置兩個任務(wù)
schedule.every(1).minutes.do(task1)
schedule.every(2).minutes.do(task2)
# 清空所有任務(wù)
schedule.clear()

7. cancel_job(job):取消特定任務(wù)

功能:移除指定的調(diào)度任務(wù),job為do()方法的返回值。

案例:取消特定任務(wù)

import schedule
def task():
    print("任務(wù)執(zhí)行!")
job = schedule.every(3).seconds.do(task)
#取消任務(wù)
schedule.cancel_job(job)

二、案例

案例 1:定時發(fā)送郵件提醒

import schedule
import time
import smtplib
from email.mime.text import MIMEText
def send_email():
    msg = MIMEText('這是定時發(fā)送的郵件提醒!', 'plain', 'utf-8')
    msg['Subject'] = '定時郵件'
    msg['From'] = 'xxx@xxx.com'
    msg['To'] ='xxx@xxx.com'
    try:
        server = smtplib.SMTP('smtp.qq.com', 587)
        server.starttls()
        server.login(msg['From'], 'xxxpassword')
        server.sendmail(msg['From'],msg['To'], msg.as_string())
        server.quit()
        print("郵件發(fā)送成功!")
    except Exception as e:
        print(f"郵件發(fā)送失敗: {e}")
# 每天早上8點(diǎn)發(fā)送郵件
schedule.every().day.at("08:00").do(send_email)
while True:
    schedule.run_pending()
    time.sleep(1)

案例 2:實(shí)現(xiàn)定時數(shù)據(jù)庫備份

import schedule
import time
import subprocess
def backup_data():
    backup_command = "mysqldump -u username -ppassword database_name > backup.sql"
    try:
        subprocess.run(backup_command, shell=True, check=True)
        print("數(shù)據(jù)庫備份成功!")
    except subprocess.CalledProcessError as e:
        print(f"數(shù)據(jù)庫備份失敗: {e}")
# 每隔2天執(zhí)行一次數(shù)據(jù)備份任務(wù)
schedule.every(2).days.do(backup_data)
while True:
    schedule.run_pending()
    time.sleep(1)

三、避坑指南

1.循環(huán)阻塞問題

問題:schedule.run_pending()需在循環(huán)中調(diào)用,但循環(huán)可能會阻塞主線程。

解決:可以使用多線程或多進(jìn)程運(yùn)行調(diào)度循環(huán),避免影響其他程序執(zhí)行。例如:

import schedule
import time
import threading
def run_schedule():
    while True:
        schedule.run_pending()
        time.sleep(1)
# 啟動調(diào)度循環(huán)線程 不影響主線程
schedule_thread = threading.Thread(target=run_schedule)
schedule_thread.start()

2.時區(qū)與時間格式

問題:使用at()方法設(shè)置時間時,默認(rèn)使用系統(tǒng)時區(qū),可能與預(yù)期不符。

解決:如需跨時區(qū)調(diào)度,可結(jié)合pytz庫進(jìn)行時區(qū)轉(zhuǎn)換,確保時間準(zhǔn)確。

一些常用見時區(qū):

  1. 亞洲時區(qū):Asia/Shanghai:中國上海(北京時間)

                   Asia/Tokyo:日本東京時區(qū) 

                   Asia/Kolkata:印度加爾各答時區(qū)

2. 美洲時區(qū):America/New_York:美國紐約時區(qū)

                  America/Los_Angeles:美國洛杉磯時區(qū)

                  America/Toronto:加拿大多倫多時區(qū)

3. 歐洲時區(qū):Europe/London:英國倫敦時區(qū)

                  Europe/Paris:法國巴黎時區(qū) 

                  Europe/Moscow:俄羅斯莫斯科時區(qū)

4. 大洋洲時區(qū):Australia/Sydney:澳大利亞悉尼時區(qū)

                    Pacific/Auckland:新西蘭奧克蘭時區(qū)

5. 非洲時區(qū):Africa/Cairo:埃及開羅時區(qū) 

                  Africa/Johannesburg:南非約翰內(nèi)斯堡時區(qū)      

掌握schedule庫的這些要點(diǎn),我們就就能輕松實(shí)現(xiàn)各類任務(wù)的定時自動化。無論是個人項(xiàng)目還是工作中的流程優(yōu)化,它都能成為你的得力助手!如果在使用過程中遇到問題,歡迎在評論區(qū)留言交流,謝謝大家的閱讀!

以上就是Python使用schedule庫實(shí)現(xiàn)任務(wù)定時自動化的詳細(xì)內(nèi)容,更多關(guān)于Python schedule庫任務(wù)定時自動化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Opencv-Python圖像透視變換cv2.warpPerspective的示例

    Opencv-Python圖像透視變換cv2.warpPerspective的示例

    今天小編就為大家分享一篇關(guān)于Opencv-Python圖像透視變換cv2.warpPerspective的示例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • Python中的變量及簡單數(shù)據(jù)類型應(yīng)用

    Python中的變量及簡單數(shù)據(jù)類型應(yīng)用

    這篇文章主要介紹了Python中的變量及簡單數(shù)據(jù)類型應(yīng)用,簡單的數(shù)據(jù)類型包括字符串和數(shù)字,更多詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-03-03
  • python中reversed與reverse的區(qū)別解析

    python中reversed與reverse的區(qū)別解析

    reverse()是python中列表的一個內(nèi)置方法(在字典、字符串和元組中沒有這個內(nèi)置方法),用于列表中數(shù)據(jù)的反轉(zhuǎn),這篇文章主要介紹了python中reversed與reverse的區(qū)別,需要的朋友可以參考下
    2023-03-03
  • Python的flask常用函數(shù)route()

    Python的flask常用函數(shù)route()

    這篇文章主要介紹了Python的flask常用函數(shù)route(),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • 在keras下實(shí)現(xiàn)多個模型的融合方式

    在keras下實(shí)現(xiàn)多個模型的融合方式

    這篇文章主要介紹了在keras下實(shí)現(xiàn)多個模型的融合方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python中的支持向量機(jī)SVM的使用(附實(shí)例代碼)

    Python中的支持向量機(jī)SVM的使用(附實(shí)例代碼)

    這篇文章主要介紹了Python中的支持向量機(jī)SVM的使用(附實(shí)例代碼),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python獲取C++中返回的char*字段的兩種思路

    Python獲取C++中返回的char*字段的兩種思路

    有時候需要獲取C++函數(shù)中返回來的不定長的char*字符串,本文小編為大家找到了兩種解決問題的思路,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • python curl2pyreqs 生成接口腳本實(shí)戰(zhàn)教程

    python curl2pyreqs 生成接口腳本實(shí)戰(zhàn)教程

    這篇文章主要介紹了python curl2pyreqs 生成接口腳本實(shí)戰(zhàn)教程,首先下載 curl2pyreqs 庫,打開調(diào)試模式,在Network這里獲取接口的cURL,需要的朋友可以參考下
    2023-10-10
  • Python hashlib和hmac模塊使用方法解析

    Python hashlib和hmac模塊使用方法解析

    這篇文章主要介紹了Python hashlib和hmac模塊使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-12-12
  • Python 查看文件的讀寫權(quán)限方法

    Python 查看文件的讀寫權(quán)限方法

    下面小編就為大家分享一篇Python 查看文件的讀寫權(quán)限方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01

最新評論

铜陵市| 股票| 来安县| 兴安县| 顺义区| 金坛市| 麻城市| 四会市| 祥云县| 左贡县| 柯坪县| 盐山县| 内丘县| 新晃| 玛曲县| 时尚| 玉屏| 柯坪县| 武陟县| 平江县| 桂东县| 多伦县| 时尚| 黄平县| 丹江口市| 珠海市| 岱山县| 西青区| 紫云| 永丰县| 怀安县| 南华县| 萍乡市| 天全县| 惠安县| 鲁甸县| 瑞昌市| 宾阳县| 东城区| 利津县| 拜城县|