Python编程:定时任务apscheduler框架

版权声明:本文为博主原创文章,欢迎转载,请注明出处 https://blog.csdn.net/mouday/article/details/84986644

APScheduler : Advanced Python Scheduler

官方文档:https://apscheduler.readthedocs.io/en/3.3.1/userguide.html

本文只做简单总结,具体示例参考文章底部链接

体系结构

schedulers(调度器)
    - BlockingScheduler : 主线程中运行,阻塞线程
    - BackgroundScheduler : 后台线程中运行,不会阻塞线程
    - AsyncIOScheduler
    - GeventScheduler
    - TornadoScheduler
    - TwistedScheduler
    - QtScheduler

triggers(触发器)
    - date 一次性任务
        - run_date (datetime 或 str) 作业的运行日期或时间
        - timezone (datetime.tzinfo 或 str)    指定时区

    - interval 循环任务
        - weeks (int)   间隔几周
        - days (int)  间隔几天
        - hours (int) 间隔几小时
        - minutes (int)   间隔几分钟
        - seconds (int)   间隔多少秒
        - start_date (datetime 或 str) 开始日期
        - end_date (datetime 或 str)   结束日期
        - timezone (datetime.tzinfo 或str) 时区
        - job stores(作业存储器)

    - cron 定时任务
        - year (intstr)    年,4位数字
        - month (intstr)(范围1-12)
        - day (intstr)(范围1-31
        - week (intstr)(范围1-53)
        - day_of_week (intstr) 周内第几天或者星期几 (范围0-6 或者 mon,tue,wed,thu,fri,sat,sun)
        - hour (intstr)(范围0-23)
        - minute (intstr)(范围0-59)
        - second (intstr)(范围0-59)
        - start_date (datetime 或 str) 最早开始日期(包含)
        - end_date (datetime 或 str)   最晚结束时间(包含)
        - timezone (datetime.tzinfo 或str) 指定时区

job stores(作业存储器)
    - 添加 job
        - add_job()
        - scheduled_job()
    - 移除 job
        - remove_job()
        - job.remove()
    - 修改 job
        - modify_job()
     - 获取 job 列表
        - get_jobs()
    - 关闭 job
        - scheduler.shutdown(wait=false)

executors(执行器)
    - ProcessPoolExecutor
    - ThreadPoolExecutor

简单示例


from datetime import datetime
from apscheduler.schedulers.blocking import BlockingScheduler

scheduler = BlockingScheduler()


def jobA():
    print("{}: {}".format("job A", datetime.now().strftime('%Y-%m-%d %H:%M:%S')))

def jobC():
    print("{}: {}".format("job C", datetime.now().strftime('%Y-%m-%d %H:%M:%S')))


# 添加作业, 方式一,可指定job_id
scheduler.add_job(jobA, 'interval', seconds=5)
scheduler.add_job(jobC, 'interval', minutes=2, id="job_c")


# 添加作业, 方式二
@scheduler.scheduled_job('interval', seconds=5)
def jobB():
    print("{}: {}".format("job B", datetime.now().strftime('%Y-%m-%d %H:%M:%S')))


# 移除作业
scheduler.remove_job(job_id="job_c")
scheduler.start()

参考

  1. 定时任务框架APScheduler学习详解
  2. apscheduler的使用
  3. Advanced Python Scheduler

猜你喜欢

转载自blog.csdn.net/mouday/article/details/84986644