APScheduler 的基本使用

APScheduler 是python的一個任務(wù)調(diào)度框架。
使用起來十分方便,提供了基于日期、固定時間間隔以及crontab類型的任務(wù),并且可以持久化任務(wù)。

1. 安裝

APScheduler下載
這里使用的是2.1.2

2. cron job例子

APScheduler是進(jìn)程內(nèi)的調(diào)度器,可以定時觸發(fā)具體的函數(shù),并且可以訪問應(yīng)用的所有變量和函數(shù)。在web應(yīng)用中通過APScheduler實現(xiàn)定時任務(wù)是很方便的。

#coding:utf-8
import datetime
from apscheduler.scheduler import Scheduler  
#不使用守護(hù)線程  
schedudler = Scheduler(daemonic = False) 
#每周星期1-星期5,9點-12點、14點-15點,0分-59分,每3秒執(zhí)行
@schedudler.cron_schedule(day_of_week='0-4', hour='9-12,14-15', minute='0-59', second='*/3')  
def quote_send_sh_job_1():  
    print 'a simple cron job start at (1)', datetime.datetime.now()  
@schedudler.cron_schedule(day_of_week='0-4', hour='9-12,14-15,17-18', minute='0-59', second='*/7')  
def quote_send_sh_job_2():  
    print 'a simple cron job start at (2)', datetime.datetime.now()  
    
schedudler.start()  

3. Store

APScheduler提供了jobstore用于存儲job的執(zhí)行信息,默認(rèn)使用的是RAMJobStore,還提供了SQLAlchemyJobStore、ShelveJobStore和MongoDBJobStore。
APScheduler允許同時使用多個jobstore,通過別名(alias)區(qū)分,在添加job時需要指定具體的jobstore的別名,否則使用的是別名是default的jobstore,即RAMJobStore。
下面以MongoDBJobStore舉例說明。

#coding:utf-8
import datetime
from apscheduler.scheduler import Scheduler  
import pymongo
from apscheduler.jobstores.mongodb_store import MongoDBJobStore
#不使用守護(hù)線程  
schedudler = Scheduler(daemonic = False)   
mongo = pymongo.Connection(host='127.0.0.1', port=27017)  
store = MongoDBJobStore(connection = mongo)  
schedudler.add_jobstore(store, 'mongo') #別名是mongo
@schedudler.cron_schedule(day_of_week='0-4', hour='9-12,13-15,16-18', minute='0-59', second='*/11', jobstore='mongo')
#2014年7月18日16點45分每11秒執(zhí)行,直到46秒結(jié)束
#@schedudler.cron_schedule(year='2014', month='7', day='18', hour='16', minute='45', second='*/11', jobstore='mongo') #和別名mongo相同
def mongo_job_store():
    print 'mongo cron job store start at', datetime.datetime.now()  
    
schedudler.start()  

注意start()必須在添加job動作之后調(diào)用,否則會拋錯。默認(rèn)會把job信息保存在apscheduler數(shù)據(jù)庫下的jobs表。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容