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

posted @ 2020-09-04 14:45  Mars.wang  阅读(1153)  评论(0编辑  收藏  举报