• python定时任务框架APSchedule


    一直想做一个分布式的调度系统,但不知道如何实现类似crontab那样的定时调度,发现有现成的轮子可用,那就是——APSchedule

    它有三种调度方式,分别是

    date 日期:触发任务运行的具体日期

    interval 间隔:触发任务运行的时间间隔

    cron 周期:触发任务运行的周期

    下面以案例的方式,给大家做个简单的介绍

    date.py

    from datetime import datetime
    
    from apscheduler.schedulers.blocking import BlockingScheduler
    
    #任务会在指定的固定时刻启动
    def job(text):
        now = datetime.now()
        print(now.strftime('%Y-%m-%d %H:%M:%S'))
        print(text)
    
    
    scheduler = BlockingScheduler()
    scheduler.add_job(job, 'date', run_date=date(2020, 9, 4), args=['text1'])
    scheduler.add_job(job, 'date', run_date=datetime(2020, 9, 4, 11, 4, 0), args=['text2'])
    scheduler.start()

    interval.py

    from datetime import datetime
    
    from apscheduler.schedulers.blocking import BlockingScheduler
    
    
    # 任务会每间隔一段时间执行一次,也可以设置开始和结束的时间
    def job(text):
        now = datetime.now()
        print(now.strftime('%Y-%m-%d %H:%M:%S'))
        print(text)
    
    
    scheduler = BlockingScheduler()
    scheduler.add_job(job, 'interval', minutes=1, args=['text1'])
    scheduler.add_job(job, 'interval', seconds=30, start_date='2020-09-04 11:02:01', end_date='2020-09-04 11:05:04',
                      args=['text1'])
    scheduler.start()

    cron.py

    from datetime import datetime
    from apscheduler.schedulers.blocking import BlockingScheduler
    
    scheduler = BlockingScheduler()
    
    # 最接近于Linux系统的crontab
    # 以装饰器的方式运行
    @scheduler.scheduled_job('cron', second='*/7', args=['job'])
    def job(text):
        now = datetime.now()
        print(now.strftime('%Y-%m-%d %H:%M:%S'))
        print(text)
    
    
    # 调用add_job运行
    # scheduler.add_job(job, 'cron', hour=11, minute='*/1', args=['job1'])
    scheduler.start()

     

    添加任务

    添加任务的方法有两种:

    1. 通过调用add_job()
    2. 通过装饰器scheduled_job()

    第一种方法是最常用的方法。第二种方法主要是方便地声明在应用程序运行时不会更改的任务。该 add_job()方法返回一个apscheduler.job.Job实例,可以使用该实例稍后修改或删除该任务。

    参考:

    https://www.cnblogs.com/BlueSkyyj/p/11678665.html

  • 相关阅读:
    spring-boot-route(七)整合jdbcTemplate操作数据库
    spring-boot-route(六)整合JApiDocs生成接口文档
    spring-boot-route(五)整合Swagger生成接口文档
    spring-boot-route(四)全局异常处理
    spring-boot-route(三)实现多文件上传
    spring-boot-route(二)读取配置文件的几种方式
    spring-boot-route(一)Controller接收参数的几种方式
    国庆,要干几件大事
    栈与队列简介
    一文了解Zookeeper
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/13613799.html
Copyright © 2020-2023  润新知