前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python中定时任务框架APScheduler入门

Python中定时任务框架APScheduler入门

原创
作者头像
Qwe7
发布于 2022-03-17 08:41:05
发布于 2022-03-17 08:41:05
96700
代码可运行
举报
文章被收录于专栏:网络收集网络收集
运行总次数:0
代码可运行

安装

安装只需要一行命令。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip3 install apscheduler

如果对Python的环境搭建及模块安装还不熟悉,可以看看我写的另一篇博客 Python环境搭建及模块安装

运行

首先介绍两个最常用的调度器:

  • BlockingScheduler 阻塞式调度器:适用于只跑调度器的程序。
  • BackgroundScheduler 后台调度器:适用于非阻塞的情况,调度器会在后台独立运行。

这是人说的话吗?字我都看得懂,意思一点也不明白。。。 简单说来,可以把 BlockingScheduler 看成是单线程,如果在程序中仅仅只运行定时任务,那么就应该选择阻塞式调度器。 而把 BackgroundScheduler 看成是多线程,如果在程序中除了运行定时任务,咱们还想同时做点别的计算啥的,那就应该选择后台调度器。

这里我选择使用 BlockingScheduler 阻塞式调度器,主程序只负责调度定时任务,不执行其他计算等操作。 如下所示:

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


def task():
    '''定时任务'''
    os.system('python3 spider.py')


if __name__ == '__main__':
    scheduler = BlockingScheduler()

    # 添加任务
    scheduler.add_job(task, 'cron', hour=11, minute=30)

    scheduler.start()

运行上面这段代码,就会在每天的11:30时执行 python3 spider.py 命令。

其中,出现了个新标签 cron,这玩意儿叫触发器,可以设置定时任务触发的条件,这里就简单介绍一下这个小东西。

APScheduler有三种内置的触发器:

date

日期,在某个具体的日期触发定时任务,仅触发一次。

如上所示,run_date 参数可以是 date型str型,甚至可以不显式指定。

interval

间隔,在某个时间间隔后触发定时任务,间隔触发无限次。

如上所示,weeks、days、hours、minutes、seconds 的参数都是 int型

cron

周期,在某个周期内触发定时任务,循环触发无限次。

该触发器的规则和 crontab 类似。各参数的说明如下:

参数

说明

year

int型或str,取值四位数的年份,如2020年

month

int型或str,取值范围为1-12月

week

int型或str,取值范围为第1-53周

day_of_week

int型或str,表示一周中的第几天,既可以用0-6表示也可以用其英语缩写表示(mon,tue,wed,thu,fri,sat,sun)

day

int型或str,取值范围为1-31日

hour

int型或str,取值范围为0-23时

minute

int型或str,取值范围为0-59分

second

int型或str,取值范围为0-59秒

start_date

datetime型或str,表示开始时间

end_date

datetime型或str,表示结束时间

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 运行
    • date
    • interval
    • cron
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档