zoukankan      html  css  js  c++  java
  • python 定时框架APScheduler

    pip install apscheduler
    APScheduler提供了七种调度器:
    BlockingScheduler:适合于只在进程中运行单个任务的情况,通常在调度器是你唯一要运行的东西时使用。
    BackgroundScheduler: 适合于要求任何在程序后台运行的情况,当希望调度器在应用后台执行时使用。
    AsyncIOScheduler:适合于使用asyncio异步框架的情况
    GeventScheduler: 适合于使用gevent框架的情况
    TornadoScheduler: 适合于使用Tornado框架的应用
    TwistedScheduler: 适合使用Twisted框架的应用
    QtScheduler: 适合使用QT的情况

    例子:

    定时轮询:

    import time
    from apscheduler.schedulers.blocking import BlockingScheduler
     
    def my_job():
        print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
     
    sched = BlockingScheduler()
    sched.add_job(my_job, 'interval', seconds=5)
    sched.start()

    上面的例子表示每隔5s执行一次my_job函数,输出当前时间信息

    1. 添加作业

    上面是通过add_job()来添加作业,另外还有一种方式是通过scheduled_job()修饰器来修饰函数

    import time
    from apscheduler.schedulers.blocking import BlockingScheduler
    
    sched = BlockingScheduler()
    @sched.scheduled_job(
    'interval', seconds=5) def my_job(): print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) sched.start()

    (1). cron定时调度(某一定时时刻执行)

    (int|str) 表示参数既可以是int类型,也可以是str类型
    (datetime | str) 表示参数既可以是datetime类型,也可以是str类型
     
    year (int|str) – 4-digit year -(表示四位数的年份,如2008年)
    month (int|str) – month (1-12) -(表示取值范围为1-12月)
    day (int|str) – day of the (1-31) -(表示取值范围为1-31日)
    week (int|str) – ISO week (1-53) -(格里历2006年12月31日可以写成2006年-W52-7(扩展形式)或2006W527(紧凑形式))
    day_of_week (int|str) – number or name of weekday (0-6 or mon,tue,wed,thu,fri,sat,sun) - (表示一周中的第几天,既可以用0-6表示也可以用其英语缩写表示)
    hour (int|str) – hour (0-23) - (表示取值范围为0-23时)
    minute (int|str) – minute (0-59) - (表示取值范围为0-59分)
    second (int|str) – second (0-59) - (表示取值范围为0-59秒)
    start_date (datetime|str) – earliest possible date/time to trigger on (inclusive) - (表示开始时间)
    end_date (datetime|str) – latest possible date/time to trigger on (inclusive) - (表示结束时间)
    timezone (datetime.tzinfo|str) – time zone to use for the date/time calculations (defaults to scheduler timezone) -(表示时区取值)

    例子:

    #表示2017年3月22日17时19分07秒执行该程序
    sched.add_job(my_job, 'cron', year=2017,month = 03,day = 22,hour = 17,minute = 19,second = 07)
     
    #表示任务在6,7,8,11,12月份的第三个星期五的00:00,01:00,02:00,03:00 执行该程序
    sched.add_job(my_job, 'cron', month='6-8,11-12', day='3rd fri', hour='0-3')
     
    #表示从星期一到星期五5:30(AM)直到2014-05-30 00:00:00
    sched.add_job(my_job(), 'cron', day_of_week='mon-fri', hour=5, minute=30,end_date='2014-05-30')
     
    #表示每5秒执行该程序一次,相当于interval 间隔调度中seconds = 5
    sched.add_job(my_job, 'cron',second = '*/5')
    scheduler.add_job(job, 'cron', hour=1, minute=5)
    hour =19 , minute =23  这里表示每天的19:23 分执行任务
    hour ='19', minute ='23'  这里可以填写数字,也可以填写字符串
    hour ='19-21', minute= '23'  表示 19:2320:2321:23 各执行一次任务
     
    #每300秒执行一次
    scheduler .add_job(job, 'interval', seconds=300)
     
    #在1月,3月,5月,7-9月,每天的下午2点,每一分钟执行一次任务
    scheduler .add_job(func=job, trigger='cron', month='1,3,5,7-9', day='*', hour='14', minute='*')
     
    # 当前任务会在 6781112 月的第三个周五的 0123 点执行
    scheduler .add_job(job, 'cron', month='6-8,11-12', day='3rd fri', hour='0-3')
     
    #从开始时间到结束时间,每隔俩小时运行一次
    scheduler .add_job(job, 'interval', hours=2, start_date='2018-01-10 09:30:00', end_date='2018-06-15 11:00:00')

    详见:https://www.cnblogs.com/luxiaojun/p/6567132.html

  • 相关阅读:
    Cannot find a free socket for the debugger
    如何让myeclipse左边选中文件后自动关联右边树
    myeclipse反编译安装 jd-gui.exe下载
    MyEclipse报错Access restriction: The type BASE64Encoder is not accessible due to restriction on required library
    如何使用JAVA请求HTTPS
    如何使用JAVA请求HTTP
    SVN提交代码时报405 Method Not Allowed
    对称加密和非对称加密
    ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
    调整Linux操作系统时区-centos7
  • 原文地址:https://www.cnblogs.com/lshan/p/15035821.html
Copyright © 2011-2022 走看看