中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python定時任務觸發的方法是什么

發布時間:2023-05-09 16:28:12 來源:億速云 閱讀:155 作者:iii 欄目:開發技術

本篇內容介紹了“Python定時任務觸發的方法是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

APScheduler

APScheduler 四個組件分別為:

調度器(scheduler)、觸發器(trigger),作業存儲(job store),執行器(executor)

安裝命令:

pip install setuptools
pip install --ignore-installed apscheduler

1.新建調度器schedulers

BlockingScheduler : 調度器在當前進程的主線程中運行,也就是會阻塞當前線程

BackgroundScheduler : 調度器在后臺線程中運行,不會阻塞當前線程

import datetime as dt
from apscheduler.schedulers.blocking import BlockingScheduler
scheduler = BlockingScheduler()

2.添加調度任務trigger

① date 觸發器:(指定時間點觸發),參數如下:

  • run_date(datetime或str):任務運行的日期或時間

  • timezone(datetime.tzinfo或str):指定時區

# 例1:在 2020-9-24 時刻運行一次 func 方法
scheduler.add_job(func, 'date', run_date = dt.date(2020, 9, 24))
# 例2: 在 2020-9-24 15:10:00 時刻運行一次 func 方法
scheduler.add_job(func, 'date', run_date = dt.datetime(2020, 9, 24, 15, 10, 0))
# 例3: 在 2020-9-24 15:11:00 時刻運行一次 func 方法
scheduler.add_job(func, 'date', run_date = '2020-9-24 15:11:00')

② interval 觸發器: (固定時間間隔觸發),參數如下:

  • weeks(int):間隔幾周

  • days(int):間隔幾天

  • hours(int):間隔幾小時

  • minutes(int):間隔幾分鐘

  • seconds(int):間隔幾秒鐘

  • start_date(datetime或str):開始時間

  • end_date(datetime或str):結束時間

  • timezone(datetime.tzinfo或str):時區

# 例1:每隔兩分鐘執行一次 func 方法
scheduler.add_job(func, 'interval', minutes = 2)
# 例2:在 2020-9-24 15:15:00 ~ 2020-9-24 15:20:00 之間, 每隔兩分鐘執行一次 func 方法
scheduler.add_job(func, 'interval', minutes = 2, start_date = '2020-9-24 15:15:00' , 
                  end_date = '2020-9-24 15:20:00')

③ cron 觸發器:(在指定時間周期性地觸發),參數如下:

  • year(int 或 str):年

  • month(int 或 str):月

  • day(int 或 str):日

  • week(int 或 str):周(1-53)

  • day_of_week(int 或 str):星期幾(0-6)

  • hour(int 或 str):時

  • minute(int 或 str):分

  • second(int 或 str):秒

  • start_date(datetime或str):最早開始時間(包含)

  • end_date(datetime或str):最晚結束時間(包含)

  • timezone(datetime.tzinfo或str):指定時區

字符 :

1. * 每一(每一分) 

2. ? 表示不關心,任意 

3. - 范圍 (小時:1-12,1到12點運行) 

4. , 標示多個值 (小時 1,2,3 1點2點3點運行) 

5. / 遞增觸發(0/15,從0開始每15秒運行一次) 

6. L 最后(日L,當月最后一天,周L周六) 

7. W 指定日期最近的工作日(周一到周五) 

8. # 序號(表示每月的第幾個周幾) 

# 例:在每年 1-3、7-9 月份中的每個星期一、二中的 00:00, 01:00, 02:00 和 03:00 執行 func 任務
scheduler.add_job(func, 'cron', month = '1-3,7-9',day='0, tue', hour='0-3')

3.運行調度任務

scheduler.start()

3.1 測試時間

def forecast_adjust():
    now_temp = datetime.now()
    print('執行方案一', now_temp, '時間間隔: ', now_temp-t0)
 
def for2():
    now_temp = datetime.now()
    print('執行方案二', now_temp, '時間間隔: ', now_temp-t0)
 
def fortime3():
    now_temp = datetime.now()
    print('執行方案三', now_temp, '時間間隔: ', now_temp-t0)
    return '9999999999999'
    
def a__():
    b = scheduler.add_job(fortime3, 'cron', hour='15', minute = '18')
    c = scheduler.add_job(fortime3, 'cron', hour='15', minute = '30')
    d = scheduler.add_job(fortime3, 'cron', hour='15', minute = '45')
    print(b)
    print(c)
    print(c)
    return 'kkkqq'
    
t0 = datetime.now()
scheduler = BlockingScheduler()  # 采用阻塞的方式
scheduler.add_job(func=forecast_adjust,
                  trigger=CronTrigger(minute="*/1", second=20,
                                      timezone=tz_now), args=[])
 
scheduler.add_job(func=for2,
                  trigger=CronTrigger(minute="*/5", second=10,
                                      timezone=tz_now), args=[])
 
k = a__()
print(k)
scheduler.start()

Python定時任務觸發的方法是什么

4.特點,其他操作

APScheduler 定點、定時:

四個組件分別為:觸發器(trigger),作業存儲器(job store),執行器(executor),調度器(scheduler)

(1)job stores:對調度任務的管理:

① 添加job:

# add_job():可以改變或者移除 job
scheduler.add_job(func, 'interval', minutes = 2)
 
# scheduled_job():只適用于應用運行期間不會改變的 job
scheduler.scheduled_job(func, 'interval', minutes = 2)

②移除job:

# remove_job() :根據 job 的 id 來移除,所以要在 job 創建的時候指定一個 id
scheduler.add_job(func, 'interval', minutes = 2, id = 'job_one')
scheduler.remove_job(job_one)
 
# job.remove() :對 job 執行 remove 方法
job = add_job(func, 'interval', minutes = 2, id = 'job_one')
job.remvoe()

③ 暫停job:

apscheduler.job.Job.pause()
apscheduler.schedulers.base.BaseScheduler.pause_job()

④ 恢復job:

apscheduler.job.Job.resume()
apscheduler.schedulers.base.BaseScheduler.resume_job()

⑤ 修改job:

# modify_job()
scheduler.modify_job('job_one', minutes = 5)
 
# job.modify()
job = scheduler.add_job(func, 'interval', minutes = 2)
job.modify(minutes = 5)

⑥ 關閉job:

scheduler.shutdown()
scheduler.shutdown(wait=false)

(2)executors:執行調度任務的模塊,常用的 executor 有兩種:

ProcessPoolExecutor
ThreadPoolExecutor

“Python定時任務觸發的方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

界首市| 稷山县| 新营市| 呼玛县| 青冈县| 府谷县| 和平县| 奇台县| 瑞安市| 蕉岭县| 平遥县| 仙桃市| 尼木县| 拉萨市| 麻栗坡县| 凤山市| 平罗县| 肃南| 桐乡市| 郑州市| 南昌市| 故城县| 崇文区| 卢龙县| 定西市| 慈利县| 怀安县| 拉孜县| 扎兰屯市| 西城区| 淮阳县| 搜索| 封开县| 突泉县| 郓城县| 固原市| 东城区| 新沂市| 岑溪市| 洛南县| 昌平区|