前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >python定时模块:apscheduler

python定时模块:apscheduler

作者头像
悟乙己
发布于 2021-12-07 06:10:37
发布于 2021-12-07 06:10:37
92700
代码可运行
举报
文章被收录于专栏:素质云笔记素质云笔记
运行总次数:0
代码可运行

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

安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from apscheduler.schedulers.blocking import BlockingScheduler

sched = 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()

每天定时触发

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from datetime import datetime

from apscheduler.schedulers.blocking import BlockingScheduler

def 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可设置参数

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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参数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sched.add_job(child_job, max_instances=10, trigger=DateTrigger(), id="123")
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/11/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验