APScheduler 的基本使用

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表。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • APScheduler 最近想写个任务调度程序,于是研究了下 Python 中的任务调度工具,比较有名的是:Cel...
    leffss阅读 6,563评论 1 2
  • 背景 最近有个需求,需要实现一个定时或定期任务的功能,需要实现每月、每日、每时、一次性等需求,必须是轻量级不依赖其...
    guoweikuang阅读 12,964评论 1 8
  • 默直阅读 1,004评论 0 1
  • 01 童年时代,我印象中的王大爷。 王大爷是村里的一个老人。 童年时代,很少见得到军人,而王大爷,就是一名军人,只...
    黄祥礼阅读 3,443评论 0 0
  • 生来本孱弱,自小面肌黄。 淫雨横施暴,疾风漫卷狂。 飞旋争肯落?践踏不堪戕。 盛夏多华景,无人识有殇。 注:叁加海...
    庆善阅读 3,118评论 3 13

友情链接更多精彩内容