• 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

  • 相关阅读:
    oracle之 监听器无法启动的几个原因总结
    Hive之 数据类型
    Hive之 hive的三种使用方式(CLI、HWI、Thrift)
    Hive之 hive架构
    megajson 高性能的json序列化、反序列化工具
    golang json 处理的一些例子代码
    Golang把所有包括底层类库,输出到stderr的内容, 重新定向到一个日志文件里面?
    Golang的 signal
    OAuth 2.0
    golang产生guid
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/13613799.html
Copyright © 2020-2023  润新知