APScheduler -调度器 BlockingScheduler

schedulers 调度器主要分三种,一种独立运行的,一种是后台运行的,最后一种是配合其它程序使用

  • BlockingScheduler: 当这个调度器是你应用中 唯一要运行 的东西时使用
  • BackgroundScheduler: 当 不运行其它框架 的时候使用,并使你的任务在 后台运行
  • AsyncIOScheduler: 当你的程序是 异步IO模型 的时候使用

BlockingScheduler

当你的应用中,仅仅只运行定时任务,其它代码都不执行的时候,可以用到BlockingScheduler 调度器。比如你写了一个简单的程序,设置一个定时任务去抓取页面的数据。那就可以用到BlockingScheduler.

或者你单独去调试看定时任务有没执行

python 复制代码
from apscheduler.schedulers.blocking import BlockingScheduler  
import time  
  
  
# 仅运行定时任务  
scheduler = BlockingScheduler()  
  
  
# interval example, 间隔执行, 每10秒执行一次  
def task1(x):  
    print(f'task 1 executed  {x}--------', time.time())  
  
  
# 添加一个定时任务  
scheduler.add_job(  
    task1, 'interval', seconds=10,  
    args=["xxxx"], id="task_1", replace_existing=True  
)  
  
  
# cron examples, 每5秒执行一次 相当于interval 间隔调度中seconds = 5  
def task2(y):  
    print(f'task 2 executed  {y}--------', time.time())  
  
  
# 添加一个定时任务  
scheduler.add_job(  
    task2, 'cron', second='*/5',  
    args=["yyy"], id="task_2", replace_existing=True  
)

scheduler.start()

运行结果

task 2 executed  yyy-------- 1698211090.014796
task 2 executed  yyy-------- 1698211095.0198605
task 1 executed  xxxx-------- 1698211097.7044744
task 2 executed  yyy-------- 1698211100.0056248
task 2 executed  yyy-------- 1698211105.0121682
task 1 executed  xxxx-------- 1698211107.6990259
task 2 executed  yyy-------- 1698211110.0029516
task 2 executed  yyy-------- 1698211115.011106
task 1 executed  xxxx-------- 1698211117.699221

scheduler.start()

scheduler.start() 调用会阻塞主线程

python 复制代码
# 添加一个定时任务  
scheduler.add_job(  
    task2, 'cron', second='*/5',  
    args=["yyy"], id="task_2", replace_existing=True  
)  
  
scheduler.start()  
  
while(True):  
    print('main ---------------')  
    time.sleep(1)

如果后面还有其它代码,会一直没法执行。

如果有其它代码需要执行,可以使用BackgroundScheduler,使你的任务在 后台运行

相关推荐
我曾经是个程序员8 分钟前
C#Directory类文件夹基本操作大全
服务器·开发语言·c#
白云~️10 分钟前
uniappX 移动端单行/多行文字隐藏显示省略号
开发语言·前端·javascript
编码浪子16 分钟前
构建一个rust生产应用读书笔记7-确认邮件2
开发语言·后端·rust
天之涯上上31 分钟前
JAVA开发 在 Spring Boot 中集成 Swagger
java·开发语言·spring boot
2402_8575834932 分钟前
“协同过滤技术实战”:网上书城系统的设计与实现
java·开发语言·vue.js·科技·mfc
爱学习的白杨树39 分钟前
MyBatis的一级、二级缓存
java·开发语言·spring
OTWOL44 分钟前
两道数组有关的OJ练习题
c语言·开发语言·数据结构·c++·算法
问道飞鱼1 小时前
【前端知识】强大的js动画组件anime.js
开发语言·前端·javascript·anime.js
拓端研究室1 小时前
R基于贝叶斯加法回归树BART、MCMC的DLNM分布滞后非线性模型分析母婴PM2.5暴露与出生体重数据及GAM模型对比、关键窗口识别
android·开发语言·kotlin
Code成立1 小时前
《Java核心技术I》Swing的网格包布局
java·开发语言·swing