定時任務APScheduler呛占,隨時可以保持數(shù)據(jù)同步

1虑乖,APScheduler是什么?

2糙捺,APScheduler的使用場景?

  • redis持久化存儲時笙隙,使用APScheduler洪灯,使數(shù)據(jù)同步。
  • 用戶下單后使用竟痰,規(guī)定30min內必須支付签钩,否則取消訂單掏呼。

3,APScheduler 與 crontab 同為定時任務工具边臼,有什么區(qū)別哄尔?

crontab:

  • crontab是Linux系統(tǒng)提供的一個命令假消,用來完成定時任務
  • 使用django-crontab 擴展 封裝了Linux提供的crontab 命令
  • 可以獨立于程序之外柠并,不會占用程序資源,耦合性低
  • 但是它不靈活富拗,比如上面那個訂單支付問題臼予,crontab不知道要什么時候執(zhí)行,所以它做不到

APScheduler:

  • 可以獨立運行啃沪,也可以放在程序(如Django粘拾、Flask)中。
  • 靈活创千,可以在程序開始前開啟定時任務缰雇,也可以執(zhí)行到某個任務時,立即可開啟定時任務追驴。
  • 如果依賴程序的話械哟,會占用程序資源

APScheduler如何使用?

1殿雪,安裝
pip install apscheduler
2 使用方式
from apscheduler.schedulers.background import BackgroundScheduler

# 創(chuàng)建定時任務的調度器對象
scheduler = BackgroundScheduler()

# 定義定時任務
def my_job(param1, param2):
    pass

# 向調度器中添加定時任務
scheduler.add_job(my_job, 'date', args=[100, 'python'])

# 啟動定時任務調度器工作
scheduler.start()
3暇咆,調度器Scheduler
  • 獨立運行時使用BlockingScheduler
from apscheduler.schedulers.blocking import BlockingScheduler

  scheduler = BlockingScheduler()
  scheduler.start()  # 此處程序會發(fā)生阻塞
  • 在框架程序(如Django、Flask)中使用BackgroundScheduler:
  from apscheduler.schedulers.background import BackgroundScheduler

  scheduler = BackgroundScheduler()
  scheduler.start()  # 此處程序不會發(fā)生阻塞
4丙曙,執(zhí)行器 executors 可以使用線程池(ThreadPoolExecutor)和進程池(ProcessPoolExecutor)
  • 線程程池
from apscheduler.executors.pool import ThreadPoolExecutor
ThreadPoolExecutor(max_workers)  
ThreadPoolExecutor(20) # 最多20個線程同時執(zhí)行

使用方法:

executors = {
      'default': ThreadPoolExecutor(20)
  }
  scheduler = BackgroundScheduler(executors=executors)
  • 進程池
from apscheduler.executors.pool import ProcessPoolExecutor
ProcessPoolExecutor(max_workers)
ProcessPoolExecutor(5) # 最多5個進程同時執(zhí)行

使用方法:

 executors = {
      'default': ProcessPoolExecutor(3)
  }
  scheduler = BackgroundScheduler(executors=executors)
5爸业,觸發(fā)器Tigger
  • 執(zhí)行任務的時間安排:

data :在特定的時間執(zhí)行

interval:按指定的時間間隔執(zhí)行

weeks (int) – number of weeks to wait
days (int) – number of days to wait
hours (int) – number of hours to wait
minutes (int) – number of minutes to wait
seconds (int) – number of seconds to wait
start_date (datetime|str) – starting point for the interval calculation

end_date (datetime|str) – latest possible date/time to trigger on
timezone (datetime.tzinfo|str) – time zone to use for the date/time calculations

cron:按指定的周期執(zhí)行

year (int|str) – 4-digit year
month (int|str) – month (1-12)
day (int|str) – day of the (1-31)
week (int|str) – ISO week (1-53)
day_of_week (int|str) – number or name of weekday (0-6 or mon,tue,wed,thu,fri,sat,sun)
hour (int|str) – hour (0-23)
minute (int|str) – minute (0-59)
second (int|str) – second (0-59)
start_date (datetime|str) – earliest possible date/time to trigger on (inclusive)
end_date (datetime|str) – latest possible date/time to trigger on (inclusive)
t>imezone (datetime.tzinfo|str) – time zone to use for the date/time calculations (defaults to scheduler timezone)

  • 例:
 # 每天0點執(zhí)行函數(shù)的代碼,0點的話,hour可以不用寫
app.scheduler.add_job(函數(shù)名, "cron", hour=0, args=[函數(shù)需要傳的參數(shù)]) 

#每天凌晨3點執(zhí)行代碼
app.scheduler.add_job(函數(shù)名, "cron", hour=3, args=[app])

#如果date后面沒有參數(shù)的話亏镰,就是立刻執(zhí)行代碼扯旷,一般測試的時候用
app.scheduler.add_job(函數(shù)名, "date", args=[app])
6,程序運行:
scheduler.start()
7,停止APScheduler運行
scheduler.shutdown()
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末索抓,一起剝皮案震驚了整個濱河市钧忽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纸兔,老刑警劉巖惰瓜,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異汉矿,居然都是意外死亡崎坊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門洲拇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奈揍,“玉大人曲尸,你說我怎么就攤上這事∧泻玻” “怎么了另患?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蛾绎。 經(jīng)常有香客問我昆箕,道長,這世上最難降的妖魔是什么租冠? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任鹏倘,我火速辦了婚禮,結果婚禮上顽爹,老公的妹妹穿的比我還像新娘纤泵。我一直安慰自己,他們只是感情好镜粤,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布捏题。 她就那樣靜靜地躺著,像睡著了一般肉渴。 火紅的嫁衣襯著肌膚如雪公荧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天黄虱,我揣著相機與錄音稚矿,去河邊找鬼。 笑死捻浦,一個胖子當著我的面吹牛晤揣,可吹牛的內容都是我干的。 我是一名探鬼主播朱灿,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼昧识,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了盗扒?” 一聲冷哼從身側響起跪楞,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侣灶,沒想到半個月后甸祭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡褥影,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年池户,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡校焦,死狀恐怖赊抖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情寨典,我是刑警寧澤氛雪,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站耸成,受9級特大地震影響报亩,放射性物質發(fā)生泄漏。R本人自食惡果不足惜墓猎,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一捆昏、第九天 我趴在偏房一處隱蔽的房頂上張望赚楚。 院中可真熱鬧毙沾,春花似錦、人聲如沸宠页。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽举户。三九已至烤宙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間俭嘁,已是汗流浹背躺枕。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留供填,地道東北人拐云。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像近她,于是被迫代替她去往敵國和親叉瘩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內容