溫馨提示×

溫馨提示×

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

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

使用APScheduler3.0.1 實現(xiàn)定時任務的方法

發(fā)布時間:2020-10-17 03:58:49 來源:腳本之家 閱讀:146 作者:小橘子Pythoner 欄目:開發(fā)技術(shù)

需求是在某一指定的時刻執(zhí)行操作

網(wǎng)上的建議多為通過調(diào)用Scheduler的add_date_job實現(xiàn)

不過APScheduler 3.0.1與之前差異較大, 無法通過上述方法實現(xiàn)

參考 https://apscheduler.readthedocs.org/en/latest/userguide.html APScheduler 3.0.1的userguide 解決問題

from datetime import datetime
import time
import os
 
from apscheduler.schedulers.background import BackgroundScheduler
 
 
def tick():
 print('Tick! The time is: %s' % datetime.now())
 
 
if __name__ == '__main__':
 scheduler = BackgroundScheduler()
 scheduler.add_job(tick, 'interval', seconds=3)
 scheduler.start()
 print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))
 
 try:
  # This is here to simulate application activity (which keeps the main thread alive).
  while True:
   time.sleep(2)
 except (KeyboardInterrupt, SystemExit):
  scheduler.shutdown() # Not strictly necessary if daemonic mode is enabled but should be done if possible

實例的代碼實現(xiàn)每3秒執(zhí)行一次tick方法,雖然與需求不符,但發(fā)現(xiàn)add_interval_job在APScheduler 3.0.1中 已經(jīng)被

scheduler.add_job(tick, 'interval', seconds=3)

取代。

help(scheduler.add_job)得到

add_job(func, trigger=None, args=None, kwargs=None, id=None, name=None, misfire_grace_time=undefined, coalesce=undefined, max_instances=undefined, next_run_time=undefined, jobstore='default', executor='default', replace_existing=False, **trigger_args)
Adds the given job to the job list and wakes up the scheduler if it's already running.
 
Any option that defaults to undefined will be replaced with the corresponding default value when the job is scheduled (which happens when the scheduler is started, or immediately if the scheduler is already running).
 
The func argument can be given either as a callable object or a textual reference in the package.module:some.object format, where the first half (separated by :) is an importable module and the second half is a reference to the callable object, relative to the module.
 
The trigger argument can either be:
the alias name of the trigger (e.g. date, interval or cron), in which case any extra keyword arguments to this method are passed on to the trigger's constructor
an instance of a trigger class

由此可知,第參數(shù)為trigger,可取值為 date、interval、cron, **trigger_args為該trigger的構(gòu)造函數(shù)。

通過源碼找到DateTrigger 的構(gòu)造函數(shù)

def __init__(self, run_date=None, timezone=None)

所以,只需將指定的時間傳入add_job

scheduler.add_job(tick, 'date', run_date='2014-11-11 14:48:00')

以上這篇使用APScheduler3.0.1 實現(xiàn)定時任務的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節(jié)

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

AI