相关文章推荐
爽快的镜子  ·  Oracle日期时间操作大全 - ...·  23 小时前    · 
刚毅的火柴  ·  AIGC测试-阿里云·  5 月前    · 
留胡子的毛豆  ·  Latex中表格问题 - ...·  1 年前    · 

Python中定时任务(计划任务)最常用的解决方案就是 APScheduler

APScheduler 全称 Advanced Python Scheduler 作用为在指定的时间规则执行指定的作业

pip install apscheduler
  • BlockingScheduler 阻塞式调度器
  • BackgroundScheduler 后台调度器(非阻塞)
  • 添加计划任务

    scheduler.add_job(func, trigger=None, args=None, kwargs=None, .... , **trigger_args)
    

    trigger: 触发器(可选):date, interval, cron

    args: 用于调用func的位置参数列表

    更多参考:add_job

    1. date触发器

    在某个日期时间只触发一次事件。示例代码如下:

    from datetime import date
    from apscheduler.schedulers.blocking import BlockingScheduler
    sched = BlockingScheduler()
    def task(text):
        print(text)
    sched.add_job(task,'date',run_date=date(2022,2,2),args=['附加参数'])
    sched.start()
    

    更多参考:date

    2. interval触发器

    想要在固定的时间间隔触发事件。interval的触发器可以设置以下的触发参数:

  • weeks:周。整形。
  • days:一个月中的第几天。整形。
  • hours:小时。整形。
  • minutes:分钟。整形。
  • seconds:秒。整形。
  • start_date:间隔触发的起始时间。
  • end_date:间隔触发的结束时间。
  • jitter:触发的时间误差。
  • 更多参考:interval

    3. cron触发器(常用)

    在某个确切的时间周期性的触发事件。可以使用的参数如下:

  • year:4位数字的年份
  • month:1-12 月份
  • day:1-31 日
  • week:1-53 周
  • day_of_week: 0-6 或 'mon'、'tue'、'wed'、'thu'、'fri、'sat'、'sun'
  • hour: 0-23 小时
  • minute: 0-59 分钟
  • second: 0-59 秒
  • start_date: datetime类型 或者 字符串类型,起始时间。
  • end_date: datetime类型 或者 字符串类型,结束时间。
  • timezone:时区。
  • jitter:任务触发的误差时间。
  • 示例如下:

    def task():
        scheduler = BlockingScheduler()
        scheduler.add_job(tick,"cron",day="4th sun",hour=20,minute=1)
    

    也可以用表达式类型:

    表达式可用字段描述
    *任何在每个值都触发
    */a任何每隔a触发一次
    a-b任何在a-b区间内任何一个时间触发(a<b)
    a-b/c任何在a-b区间内每隔c触发一次
    xth yday第x个星期y触发
    last xday最后一个星期x触发
    x,y,z任何可以把上面的表达式进行组合

    更多参考:cron

  • 12小时前
  • 私信