定时任务 apscheduler 简单使用

定时任务 apscheduler 简单使用

User guide — APScheduler 3.10.4.post2 documentation

安装

pip install apscheduler

BlockingScheduler 基本使用

from datetime import datetime

from apscheduler.schedulers.blocking import BlockingScheduler
from apscheduler.triggers.cron import CronTrigger

# A scheduler that runs in the foreground
scheduler = BlockingScheduler()

def print_now():
    # 打印当前时间
    print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))


# 立即执行一次
scheduler.add_job(print_now, 'date', run_date=datetime.now())
# 每60秒执行一次
scheduler.add_job(print_now, 'interval', seconds=3)

# 使用 corn 表达式, 周一到周六的每天早上 9 点到下午 18 点之间,每隔 1 分钟执行一次
# sched.add_job(print_now, CronTrigger.from_crontab('*/1 9-17 * * 1-6'))

if __name__ == '__main__':
    print("定时任务 ~ 启动! ")
    scheduler.start()
    print("定时任务 ~ 结束!")  # 使用 BlockingScheduler 时, 这里将不会被执行, 定时任务会阻塞主线程

输出结果

定时任务 ~ 启动! 
2024-10-09 23:38:58
2024-10-09 23:39:01
2024-10-09 23:39:04
2024-10-09 23:39:07
2024-10-09 23:39:10
2024-10-09 23:39:13

BackgroundScheduler 的使用

import time
from datetime import datetime

from apscheduler.schedulers.background import BackgroundScheduler

scheduler = BackgroundScheduler()


# 使用注解的形式标记函数为定时任务, 或者使用 sched.add_job 方法, 等同效果
@scheduler.scheduled_job('interval', seconds=3)
def print_now():
    # 打印当前时间
    print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))


if __name__ == '__main__':
    print("定时任务 ~ 启动! ")
    scheduler.start()  # 使用 BackgroundScheduler 时, 定时任务不会阻塞主线程
    print("定时任务 ~ 结束!")
    # 定时任务随着主线程的结束而结束, 所以这里需要一个死循环来阻止主线程结束, 才能看到定时器的效果
    while True:
        time.sleep(1)
        pass

输出结果

定时任务 ~ 启动! 
定时任务 ~ 结束!
2024-10-09 23:47:24
2024-10-09 23:47:27
2024-10-09 23:47:30
2024-10-09 23:47:33
2024-10-09 23:47:36
2024-10-09 23:47:39
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦中千秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值