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

Python使用APScheduler設(shè)置每月固定日期運行的定時任務(wù)

 更新時間:2026年01月21日 08:39:15   作者:幸福清風(fēng)  
在開發(fā)自動化腳本或后臺服務(wù)時,我們經(jīng)常需要讓某些任務(wù)按照特定的時間周期自動執(zhí)行,Python 的 APScheduler(Advanced Python Scheduler)庫是一個強(qiáng)大且靈活的工具,能夠輕松地幫助我們實現(xiàn)這些需求,下面我們就來看看具體實現(xiàn)方法吧

在開發(fā)自動化腳本或后臺服務(wù)時,我們經(jīng)常需要讓某些任務(wù)按照特定的時間周期自動執(zhí)行。例如,每月初生成報告、每月末清理日志文件,或者在每月的某個特定日期發(fā)送通知。Python 的 APScheduler(Advanced Python Scheduler)庫是一個強(qiáng)大且靈活的工具,能夠輕松地幫助我們實現(xiàn)這些需求。

本文將詳細(xì)介紹如何利用 APScheduler 的 Cron 觸發(fā)器(CronTrigger)來設(shè)置每月固定日期運行的定時任務(wù)。

1. 理解 Cron 表達(dá)式與 APScheduler

APScheduler 提供了多種觸發(fā)器類型,其中 CronTrigger 最適合處理復(fù)雜的周期性任務(wù)。它借鑒了 Unix/Linux 系統(tǒng)中的 Cron 表達(dá)式概念,但提供了更友好的 Python 接口。

一個典型的 Cron 表達(dá)式由六個(或七個)字段組成,分別代表秒、分、時、日(月)、月、周(日)、年(可選)。在 APScheduler 中,我們通常只需要關(guān)注前五個字段:

  • second (秒)
  • minute (分鐘)
  • hour (小時)
  • day (日,即每月的第幾天)
  • month (月)
  • day_of_week (周,即一周的第幾天)

要設(shè)置每月固定日期運行,關(guān)鍵在于正確配置 day 參數(shù)。

2. 環(huán)境準(zhǔn)備

首先,確保你已經(jīng)安裝了 APScheduler 庫。如果尚未安裝,請使用 pip 進(jìn)行安裝:

pip install apscheduler

3. 核心實現(xiàn):設(shè)置每月固定日期

我們將通過幾個具體的例子來展示不同的設(shè)置方法。

示例 1:每月特定一天運行

這是最常見的場景。假設(shè)我們需要在每月 15 號的上午 9:00 執(zhí)行一個任務(wù)。

from datetime import datetime
from apscheduler.schedulers.blocking import BlockingScheduler # 導(dǎo)入阻塞型調(diào)度器

def my_monthly_task():
    """
    定義一個簡單的任務(wù)函數(shù)
    """
    current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    print(f"【任務(wù)執(zhí)行】 - 當(dāng)前時間: {current_time}")
    # 在這里放置你的實際業(yè)務(wù)邏輯
    # 例如:generate_report(), send_email(), cleanup_logs() 等

# --- 步驟 1: 創(chuàng)建調(diào)度器實例 ---
# BlockingScheduler 適用于腳本運行,它會阻塞主線程
scheduler = BlockingScheduler()

# --- 步驟 2: 添加定時任務(wù) ---
scheduler.add_job(
    func=my_monthly_task,      # 要執(zhí)行的函數(shù)對象
    trigger='cron',            # 指定使用 Cron 觸發(fā)器
    day=15,                    # <--- 關(guān)鍵:指定每月的第15天
    hour=9,                    # 指定在 9 點執(zhí)行
    minute=0,                  # 指定在 0 分執(zhí)行
    id='monthly_task_15th'     # (可選) 為任務(wù)指定一個唯一ID,方便管理
)

print("定時任務(wù)已添加:每月15號上午9:00執(zhí)行。")

# --- 步驟 3: 啟動調(diào)度器 ---
try:
    print("調(diào)度器已啟動,等待任務(wù)執(zhí)行...")
    scheduler.start() # 啟動調(diào)度器,程序會在此處保持運行狀態(tài)
except KeyboardInterrupt:
    print("\n接收到中斷信號,調(diào)度器已關(guān)閉。")
    scheduler.shutdown(wait=True) # 平滑關(guān)閉調(diào)度器

在這個例子中,day=15 明確指定了任務(wù)只會在每個月的 15 號運行。需要注意的是,如果你設(shè)置 day=31,而當(dāng)月沒有 31 號(如 2 月),那么該月的任務(wù)將不會被觸發(fā)。

示例 2:每月特定幾天運行

有時,我們需要在每月的多個固定日期都執(zhí)行任務(wù)。例如,每月 1 號和 15 號。這時,我們可以將 day 參數(shù)設(shè)置為列表 [1, 15] 或逗號分隔的字符串 '1,15'。

# ... (導(dǎo)入和函數(shù)定義同上)

# 添加任務(wù):每月1號和15號的上午9:00執(zhí)行
scheduler.add_job(
    func=my_monthly_task,
    trigger='cron',
    day='1,15',               # <--- 指定每月的1號和15號
    # 或者: day=[1, 15],
    hour=9,
    minute=0,
    id='monthly_task_1st_and_15th'
)

print("定時任務(wù)已添加:每月1號和15號上午9:00執(zhí)行。")

# ... (啟動調(diào)度器)

示例 3:每月最后一天運行

對于月末操作,比如備份數(shù)據(jù)或結(jié)算,我們可能需要在每月的最后一天執(zhí)行任務(wù)。APScheduler 提供了便捷的表達(dá)方式 day='last'

# ... (導(dǎo)入和函數(shù)定義同上)

# 添加任務(wù):每月最后一天的上午9:00執(zhí)行
scheduler.add_job(
    func=my_monthly_task,
    trigger='cron',
    day='last',               # <--- 指定每月的最后一天
    hour=9,
    minute=0,
    id='monthly_task_last_day'
)

print("定時任務(wù)已添加:每月最后一天上午9:00執(zhí)行。")

# ... (啟動調(diào)度器)

這種方式非常智能,它能自動識別不同月份以及閏年的天數(shù)差異。

示例 4:每月特定周幾(如每月第一個周一)

除了按日期,我們有時還需要按“第 X 個周 Y”來安排任務(wù)。例如,每月第一個周一。APScheduler 也支持這種表達(dá)。

# ... (導(dǎo)入和函數(shù)定義同上)

# 添加任務(wù):每月第一個周日的上午9:00執(zhí)行
# 注意:day_of_week='sun' 代表周日,'mon' 代表周一,以此類推
scheduler.add_job(
    func=my_monthly_task,
    trigger='cron',
    day='1st sun',            # <--- 指定每月的第一個周日 ('1st' for first, '2nd' for second, etc.)
    hour=9,
    minute=0,
    id='monthly_task_first_sunday'
)

print("定時任務(wù)已添加:每月第一個周日上午9:00執(zhí)行。")

# ... (啟動調(diào)度器)

類似的,'2nd mon' 表示每月第二個周一,'3rd tue' 表示每月第三個周二,等等。如果某個月份不滿足條件(例如某月沒有第五個周日),則該月的任務(wù)不會執(zhí)行。

4. 總結(jié)

通過 APSchedulerCronTrigger,我們可以非常靈活地配置各種周期性任務(wù)。

  • day=N: 每月 N 號。
  • day='N,M'day=[N, M]: 每月 N 號和 M 號。
  • day='last': 每月最后一天。
  • day='last-N': 每月倒數(shù)第 N 天。
  • day='1st mon', day='2nd tue': 每月第一個周一,第二個周二等。

結(jié)合 hourminute 等參數(shù),可以精確控制任務(wù)在每天的具體時刻執(zhí)行。

到此這篇關(guān)于Python使用APScheduler設(shè)置每月固定日期運行的定時任務(wù)的文章就介紹到這了,更多相關(guān)Python APScheduler定時任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python使用js2py庫運行js代碼

    python使用js2py庫運行js代碼

    本文主要介紹了thon使用js2py庫運行js代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Python中的defaultdict與__missing__()使用介紹

    Python中的defaultdict與__missing__()使用介紹

    下面這篇文章主要給大家介紹了關(guān)于Python中defaultdict使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-02-02
  • 詳解Python中映射類型(字典)操作符的概念和使用

    詳解Python中映射類型(字典)操作符的概念和使用

    這篇文章主要介紹了詳解Python中映射類型(字典)操作符的概念和使用,字典是目前Python中唯一的映射類型,需要的朋友可以參考下
    2015-08-08
  • Python打包文件夾的方法小結(jié)(zip,tar,tar.gz等)

    Python打包文件夾的方法小結(jié)(zip,tar,tar.gz等)

    這篇文章主要介紹了Python打包文件夾的方法,結(jié)合實例形式總結(jié)分析了Python打包成zip,tar,tar.gz等格式文件的操作技巧,需要的朋友可以參考下
    2016-09-09
  • Python中實現(xiàn)限定抽獎次數(shù)的機(jī)制的項目實踐

    Python中實現(xiàn)限定抽獎次數(shù)的機(jī)制的項目實踐

    抽獎系統(tǒng)作為吸引用戶、提高用戶參與度和活躍度的重要手段,本文主要介紹了Python中實現(xiàn)限定抽獎次數(shù)的機(jī)制的項目實踐,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • 一文搞懂Python中輕量型數(shù)據(jù)庫SQLite3的用法

    一文搞懂Python中輕量型數(shù)據(jù)庫SQLite3的用法

    SQLite 是一個極受歡迎的輕量級數(shù)據(jù)庫,它被廣泛應(yīng)用于各種大小的項目中,本文將詳細(xì)介紹 Python 中如何使用 SQLite3 庫進(jìn)行數(shù)據(jù)庫操作,感興趣的小伙伴可以了解下
    2025-07-07
  • Python自然語言處理 NLTK 庫用法入門教程【經(jīng)典】

    Python自然語言處理 NLTK 庫用法入門教程【經(jīng)典】

    這篇文章主要介紹了Python自然語言處理 NLTK 庫用法,結(jié)合實例形式詳細(xì)分析了NLTK庫的功能、安裝、引用以及使用NLTK庫進(jìn)行文本分析的各種常用操作技巧,需要的朋友可以參考下
    2018-06-06
  • Pandas庫之DataFrame使用的學(xué)習(xí)筆記

    Pandas庫之DataFrame使用的學(xué)習(xí)筆記

    這篇文章主要介紹了Pandas庫之DataFrame使用的學(xué)習(xí)筆記,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 通過Python將MP4視頻轉(zhuǎn)換為GIF動畫

    通過Python將MP4視頻轉(zhuǎn)換為GIF動畫

    Python可用于讀取常見的MP4視頻格式并將其轉(zhuǎn)換為GIF動畫。本文將詳細(xì)為大家介紹實現(xiàn)的過程,文中的代碼具有一定的參考價值,感興趣的小伙伴可以學(xué)習(xí)一下
    2021-12-12
  • python 讀取文件并把矩陣轉(zhuǎn)成numpy的兩種方法

    python 讀取文件并把矩陣轉(zhuǎn)成numpy的兩種方法

    今天小編就為大家分享一篇python 讀取文件并把矩陣轉(zhuǎn)成numpy的兩種方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02

最新評論

朝阳市| 凤山市| 柘荣县| 潞西市| 镇雄县| 乌什县| 莎车县| 巴青县| 格尔木市| 阳朔县| 富平县| 固安县| 高尔夫| 永康市| 格尔木市| 桂平市| 常山县| 瓮安县| 盐亭县| 蓬莱市| 遵义市| 克什克腾旗| 岫岩| 濮阳县| 红桥区| 万安县| 新闻| 斗六市| 娄底市| 通渭县| 兴文县| 芒康县| 铜陵市| 射阳县| 阿合奇县| 澄迈县| 大埔区| 怀安县| 含山县| 景谷| 连山|