热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python定时模块:apscheduler

开个头,有参考:python定时任务最强框架APScheduler详细教程安装:pipinstallapscheduler一个案例其中

开个头,有参考:python定时任务最强框架APScheduler详细教程

安装:

pip install apscheduler

在这里插入图片描述


一个案例

在这里插入图片描述

其中 BlockingScheduler是阻塞性的调度器,是最基本的调度器,下面调用 start方法就会阻塞当前进程,所以如果你的程序除了调度进程没有其他后台进程,那么是可以是否的,否则这个调度器会阻塞你程序的正常执行。

接下来就是定义一个 my_clock函数,这个函数就是需要定时调度的任务代码。

然后就是实例化一个 BlockingScheduler对象,并把 my_clock添加到任务调度中。然后看 interval参数,这里用的是间隔的方式来调度,调度频率是 seconds=3,也就是每3秒执行一次。

执行结果如下:
在这里插入图片描述

可以看到每隔3秒钟的时间会执行一次。说明定时任务已经成功执行了!

在了解了 APScheduler的基本使用后,再来对 APScheduler的四个基本对象做个了解,这样才能从全局掌握 APScheduler。


指定某天执行

参考:https://apscheduler.readthedocs.io/en/stable/modules/triggers/date.html


from apscheduler.schedulers.blocking import BlockingSchedulersched = BlockingScheduler()def my_job(text):print(text)# The job will be executed on November 6th, 2009
sched.add_job(my_job, 'date', run_date=date(2009, 11, 6), args=['text'])# The job will be executed on November 6th, 2009 at 16:30:05
sched.add_job(my_job, 'date', run_date=datetime(2009, 11, 6, 16, 30, 5), args=['text'])# 写法三:
sched.add_job(my_job, 'date', run_date='2009-11-06 16:30:05', args=['text'])# 写法四:指定开始与结束时间
# The same as before, but starts on 2010-10-10 at 9:30 and stops on 2014-06-15 at 11:00
sched.add_job(job_function, 'interval', hours=2, start_date='2010-10-10 09:30:00', end_date='2014-06-15 11:00:00')sched.start()

每天定时触发

from datetime import datetimefrom apscheduler.schedulers.blocking import BlockingSchedulerdef my_job(text):print(text)scheduler = BlockingScheduler()
scheduler.add_job(my_job, 'cron',hour=17,minute=8, args=['text'])
scheduler.start()

在每天下午的17:08执行一次任务


add_job可设置参数

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

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:任务触发的误差时间。



报错一:skipped: maximum number of running instances reached (1)

参考:apscheduler提示maximum错误

通过设置max_instances参数

sched.add_job(child_job, max_instances=10, trigger=DateTrigger(), id="123")

推荐阅读
author-avatar
koujj
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有