码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • APScheduler -调度器 BlockingScheduler


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

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

    BlockingScheduler

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

    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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    运行结果

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    scheduler.start()

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

    # 添加一个定时任务  
    scheduler.add_job(  
        task2, 'cron', second='*/5',  
        args=["yyy"], id="task_2", replace_existing=True  
    )  
      
    scheduler.start()  
      
    while(True):  
        print('main ---------------')  
        time.sleep(1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

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

  • 相关阅读:
    (附源码)Springboot酒店预订管理系统 毕业设计 092101
    腾讯开源项目——behaviac——学习1
    springboot uniapp毕业设计-基于Uniapp+SSM实现的Android的网店系统实现的App
    springboot毕设项目城市人口户籍在线管理系统j37rt(java+VUE+Mybatis+Maven+Mysql)
    区块链的历史和发展:从比特币到以太坊
    Win11怎么安装语音包?Win11语音包安装教程
    【记事本 】dom操作的类型
    【Web】| CSS Float (浮动)的使用方法
    为网站设置欢迎页面和自定义网站的图标教程~
    PolarDB-X 全局 Binlog 解读之性能篇(上)
  • 原文地址:https://blog.csdn.net/qq_27371025/article/details/134087041
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号