定时任务:APSchedule 和 crontab

定时任务

一般分为两种:
1.静态定时任务,一开始就知道需要在什么时候执行。
可以选择crontab 和 APScheduler
2.动态定时任务,一开始并不知道要在什么时间点执行。
这种情况,crontab就不方便了,常用APScheduler.

APScheduler

一、APScheduler介绍

1,作用:

APScheduler(advanceded python scheduler):是一款Python开发的定时任务工具;就是一个用来定时的模块。

2,特点
不依赖于Linux系统的crontab系统定时,独立运行;可以单独开一个进程或者线程执行。
可以动态添加新的定时任务:
如:下单后30分钟内必须支付,否则取消订单,就可以借助此工具(每下一单就要添加此订单的定时任务)
对添加的定时任务可以做持久保存。
3, APScheduler的基本构造:
触发器(Trigger):指定定时任务执行的时机,
    1.date 在特定的时间日期执行:类似调一个闹钟固定一个时间就执行
    2.interval 经过指定的时间间隔执行
    3.cron 按指定的周期执行
存储器(job stores):指的是要将定时任务存储在哪里
	1.MemoryJobStore 	内存 (默认)
	2.MongoDBJobStore		
	3.RedisJobStore	
	4.SQLAlchemyJobStore
执行器(executors):在执行该定时任务时,以进程或线程方式执行任务
	1.ThreadPoolExecutor
	2.ProcessPoolExecutor
调度器(Scheduler):负责管理定时任务
	1.BlockingScheduler 单独运行
	2.BackGroundScheduler 融合到web程序中((如Django、Flask))

二、基本使用

1,安装apscheduler工具
pip install apscheduler	  # Python开发的:python下载包都用pip
2,基本使用步骤:
1,导包:根据需要导入调度器(BackgroundScheduler或BlockingScheduler )
2,定义定时任务,即定义好需要进行定时的任务函数
3,创建要进行定时任务的调度器对象
4,向调度器对象中添加上该任务
5,启动定时任务,使用start()方法
3,代码实现
# 导入调度器(以独立运行模块为例),导入执行器(以进程为例)
from apscheduler.schedulers.blocking import  BlockingScheduler
from apscheduler.executors.pool import ProcessPoolExecutor

# 配置执行器:如:使用进程的方式运行定时任务,同一时刻,最多有3个进程同时运行
executor={
   
    "default":ProcessPoolExecutor(3)
}

# 创建任务:如打印1111的任务
def my_job():
    print("1111")

# 创建调度器对象:指定执行器为executor
scheduler=BlockingScheduler(executors=executor)

# 添加定时任务:(以date触发器为例:2020-3-29 11:55:00触发任务)
scheduler.add_job(my_job,"date",run_date="2020-3-29 11:55:00")

if __name__ == "__main__":
    # 启动定时任务
    scheduler.start()

三,触发器Trigger

add_job()方法将任务添加进定时器中的方法为:
add_job(执行的函数,触发器,时间)

触发器是在使用添加任务方法add_job()的时候,通过参数的方式进行配置的。

1,触发器:date

date触发器时的时间参数run_date(也可以写成next_run_time)的写法:

# 在2019年11月6日00:00:00执行:
run_date=date(2009, 11, 6)
# 在2019年11月6日16:30:05:
run_date=datetime(2009, 11, 6, 16, 30, 5)或run_date='2009-11-06 16:30:05'
# 立即执行:不添加时间
</
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值