美文网首页
APScheduler 的基本使用

APScheduler 的基本使用

作者: 那脸憔悴 | 来源:发表于2017-04-05 12:38 被阅读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表。

    相关文章

      网友评论

          本文标题:APScheduler 的基本使用

          本文链接:https://www.haomeiwen.com/subject/zjitattx.html