首页 > 其他分享 >flask 定时任务(APScheduler)使用current_app app_context()上下文

flask 定时任务(APScheduler)使用current_app app_context()上下文

时间:2024-07-15 09:27:28浏览次数:15  
标签:flask app current context create APP

前言:

描述:flask定时任务调用的方法中使用了current_app.logger.info()记录日志报错

 

报错代码

   raise RuntimeError(unbound_message) from None
RuntimeError: Working outside of application context.

This typically means that you attempted to use functionality that needed
the current application. To solve this, set up an application context
with app.app_context(). See the documentation for more information.

解决办法 :

1.创建 create.py文件

为了方便快速使用此代码,我把create.py非核心代码已注释掉,如下:

from flask import Flask, json

# from utils.cache_helper import CacheHelper
# from utils.log_handler import LogHandler


def create_app():
    # init app
    app = Flask(__name__)
    # # 读取json配置
    # app.config.from_file("settings.json", load=json.load)
    # # 初始化Cache
    # cache = CacheHelper(app, config={'CACHE_TYPE': 'simple'})
    # # 添加日志配置
    # for log_handler in LogHandler.get_log_handlers():
    #     app.logger.addHandler(log_handler)
    return app

  2.定时任务调用的方法中代码如下 

引入create.py文件中create_app()方法
from create import create_app
方法一
   @classmethod
    def my_job(cls):
        # 此方法在定时任务多的情况下,会有性能问题,少的情况没啥问题
        app = create_app()
        with app.app_context():
            current_app.logger.info("my_job已执行")
            print(f"my_job,当前时间{datetime.now()}")
方法二 (推荐)

添加APP全局变量

from create import create_app

APP = None


def get_app():
    global APP
    APP = APP if APP is not None else create_app()

定时任务调用的方法中使用如下

提示with APP.app_context():不要写成with APP.app_context:    会报错,因为app_context是一个方法而不是一个属性,所以要写成app_context(),加上括号

 @classmethod
    def my_job(cls):      
        # 使用全局APP变量
        get_app()
        with APP.app_context():
            current_app.logger.info("my_job已执行")
            print(f"my_job,当前时间{datetime.now()}")

3.执行效果

总结:

flask定时任务(APScheduler)的使用,链接如下: https://blog.csdn.net/weixin_41934979/article/details/140245835

结合上边链接,就是完整的flask 定时任务(APScheduler)使用current_app的全过程和步骤

 源代码地址:https://gitee.com/jxzcode_admin/flask-project.git

参考资料:

https://blog.csdn.net/weixin_42185136/article/details/104496351?spm=1001.2014.3001.5506

https://www.jianshu.com/p/d5a46b2d2fd3 

标签:flask,app,current,context,create,APP
From: https://blog.csdn.net/weixin_41934979/article/details/140406152

相关文章

  • [附开题]flask框架Web民宿管理系统的设计与实现89x8t(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景:近年来,随着旅游业的蓬勃发展和消费者出行方式的多元化,民宿作为一种新兴的住宿选择,凭借其独特的居住体验、灵活的租赁方式和个性化的服务,受......
  • [附开题]flask框架Web精品课程网络平台的设计与实现3q7nv(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景:随着信息技术的迅猛发展和教育理念的持续革新,传统教学模式正逐步向数字化、网络化转型。精品课程网络平台作为教育信息化的重要载体,不仅能......
  • [附开题]flask框架搬家网平台iz216(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景:随着城市化进程的加速和人口流动性的增强,搬家服务需求日益增长,成为现代生活中不可或缺的一部分。然而,传统搬家行业存在信息不对称、服务质......
  • [附开题]flask框架班级管理系统3pdep(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景:在教育信息化的浪潮中,传统的班级管理模式面临着诸多挑战。随着学生数量的增加和教育资源的日益丰富,如何高效地管理班级信息、协调班级事务......
  • Kotlin标准函数(语法糖)let with run also apply快速讲解
    目录1、知识储备——扩展函数原理定义扩展函数调用扩展函数2、返回值为上下文对象的标准函数applyalso3、返回值为Lambda表达式结果letrunwith4、一表总结1、知识储备——扩展函数原理Kotlin在不继承父类或实现接口下,也能扩展一个类的新功能定义扩展函数f......
  • 基于uni-app与图鸟UI的知识付费小程序模板
    一、项目概述在知识经济蓬勃发展的背景下,移动互联网成为知识传播与消费的重要渠道。本项目旨在利用前沿的前端技术栈——uni-app及高效UI框架图鸟UI,打造一款集多功能于一体的、面向广大求知者的知识付费平台移动端模板。该模板旨在简化开发流程,加速产品迭代,同时确保卓越的用户......
  • JVM:SpringBoot TomcatEmbeddedWebappClassLoader
    文章目录一、介绍二、SpringBoot中TomcatEmbeddedWebappClassLoader与LaunchedURLClassLoader的关系一、介绍TomcatEmbeddedWebappClassLoader是SpringBoot在其内嵌Tomcat容器中使用的一个类加载器(ClassLoader)。在SpringBoot应用中,当你选择将应用打包成可执......
  • 分库分表策略深入解析:基于范围(Range)、基于哈希(Hash)以及基于映射表(Mapping Table)
    目录前言   1.基于范围的分库分表(Range)2.基于哈希的分库分表(Hash)3.基于映射表的分库分表(MappingTable)前言     分库分表是数据库优化中的一项重要技术,它通过将数据分散到多个数据库或表中,以提高系统的处理能力和响应速度。本篇将详细解析三种常见的分库......
  • springboot 基于uni-app的蛋糕订购小程序的设计与实现
     #系统介绍相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低商家的运营人员成本,实现了蛋糕订购的标准化、制度化、程序化的管理,有效地防止了蛋糕订购的随意管理,提高了信息的处理速度和精确度,能够及时、准确地查询和修正蛋糕信息、购物车、订单等信息。课题主要采......
  • 基于uniapp+springboot的记账小程序
    小程序视频链接:https://www.bilibili.com/video/BV1hi421Y7BE/?vd_source=cd3ceb58125e43fa5f95caf874aec5ef1.登录 2.注册 3.我的 4.账单 5.记账6.图表 7.明细 ......