zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    使用CustomValidate自定义验证控件
    C#中金额的大小写转换
    Andriod出错之Unable to build: the file dx.jar was not loaded from the SDK folder!
    VC 编写的打字练习
    机房工作笔记Ping只有单向通
    web服务协同学习笔记(1)
    Dll 学习3 将MDI子窗口封装在DLL中
    机房工作学习文件共享
    Andriod出错之Failed to find an AVD compatible with target 'Android 2.2'
    Andriod出错之wrapper was not properly loaded first
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/13613799.html
Copyright © 2011-2022 走看看