zoukankan      html  css  js  c++  java
  • APScheduler初探

       安装

    pip install apscheduler

    2  APScheduler最基本的用法: “定时几秒后启动job”        每个job都会以thread的方式被调度。分为BlockingScheduler与BackgroundScheduler方式

    BackgroundScheduler例子(不阻塞)

    from apscheduler.schedulers.background import BackgroundScheduler
    import time
    
    def job():
        print('job 3s')
    
    
    if __name__=='__main__':
    
        sched = BackgroundScheduler(timezone='MST')
        sched.add_job(job, 'interval', id='3_second_job', seconds=3)
        sched.start()
    
        while(True):
            print('main 1s')
            time.sleep(1)

    通过这个输出,我们也可以发现,调用start函数后,job()并不会立即开始执行。而是等待3s后,才会被调度执行。

    3 add_job来添加作业(或装饰器模式添加作业)

    其中,date表示具体的一次性任务,interval表示循环任务,cron表示定时任务

    只执行一次  

    scheduler.add_job(job2, 'date', run_date=datetime.datetime(2019, 2, 25, 19, 5, 6), args=['text'], id='job2')

    每5秒执行一次:

    scheduler.add_job(job1, 'interval', seconds=5, id='job1')  # 每隔5秒执行一次

    每天凌晨1点30分50秒执行一次  (装饰器模式,参考https://www.cnblogs.com/Neeo/p/10435059.html#添加作业)

    @sc.scheduled_job('cron', day_of_week='*', hour=1, minute='30', second='50')

     例(用IDLE直接调试可能会出错;若改用非阻塞的BackgroundScheduler,需要用while保持脚本不退出):

    from apscheduler.schedulers.blocking import BlockingScheduler  # 后台运行
    sc = BlockingScheduler()
    
    @sc.scheduled_job('interval', seconds=2, id='job1')  # 每隔2秒执行一次
    def check():
        print("ok...")
    
    @sc.scheduled_job('interval', seconds=4, id='job2')  # 每隔4秒执行一次
    def check1():
        print("ko...")
        
    if __name__ == '__main__':
        try:
            sc.start()            
        except Exception as e:
            print('定时任务执行失败')
        finally:
           print("end")

      #每隔2分钟执行一次, */1:每隔1分钟执行一次

    scheduler.add_job(job1, 'cron', minute="*/2", id='job1') 

    # 每小时执行一次

    scheduler.add_job(job1, 'interval', hours=1, id='job1')

    # 每小时执行一次,上下浮动120秒区间内

    # scheduler.add_job(job1, 'interval', hours=1, id='job1', jitter=120)

    小结一下日常用法:

    1、首先,from apscheduler.schedulers.background import BackgroundScheduler  #后台运行任务计划

    2、生成对象  sc = BackgroundScheduler()

    3、在要定时执行的函数头上加上装饰函数。修改cron指定运行频次:

    @sc.scheduled_job('cron',day_of_week ='0-6',hour = 9,minute = 13,second = 00,id='dowork')  # 每天9点13分执行一次,id随便写

    参考:https://www.jianshu.com/p/b829a920bd33

    https://www.cnblogs.com/Neeo/p/10435059.html

    https://www.cnblogs.com/yueerwanwan0204/p/5480870.html

  • 相关阅读:
    理解 Java Thread ContextClassLoader(线程上下文类加载器)
    StringUtils工具类常用方法汇总2(截取、去除空白、包含、查询索引)
    StringUtils工具类常用方法汇总1(判空、转换、移除、替换、反转)
    数组去重(2)
    数组去重(1)
    查找数组中的最大值(最小值)及相对应的下标
    javascript 隐式转换 == 之 [ ]==![ ] 结果为true,而{ }==!{ } 结果为false
    圣杯布局(2)>>>>>
    圣杯布局(1)>>>>>
    二分查找里的upper bound与lower bound的实现与分析
  • 原文地址:https://www.cnblogs.com/pu369/p/12672789.html
Copyright © 2011-2022 走看看