APScheduler 的基本使用

2017-04-05  本文已影响0人  那脸憔悴

APScheduler 是python的一个任务调度框架。
使用起来十分方便,提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务。

1. 安装

APScheduler下载
这里使用的是2.1.2

2. cron job例子

APScheduler是进程内的调度器,可以定时触发具体的函数,并且可以访问应用的所有变量和函数。在web应用中通过APScheduler实现定时任务是很方便的。

#coding:utf-8
import datetime
from apscheduler.scheduler import Scheduler  
#不使用守护线程  
schedudler = Scheduler(daemonic = False) 
#每周星期1-星期5,9点-12点、14点-15点,0分-59分,每3秒执行
@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的执行信息,默认使用的是RAMJobStore,还提供了SQLAlchemyJobStore、ShelveJobStore和MongoDBJobStore。
APScheduler允许同时使用多个jobstore,通过别名(alias)区分,在添加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
#不使用守护线程  
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秒执行,直到46秒结束
#@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动作之后调用,否则会抛错。默认会把job信息保存在apscheduler数据库下的jobs表。

上一篇下一篇

猜你喜欢

热点阅读