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

前言:

描述: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 LogHandlerdef create_app():# init appapp = 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
方法一
   @classmethoddef 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_appAPP = Nonedef get_app():global APPAPP = APP if APP is not None else create_app()

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

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

 @classmethoddef 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 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA中Git常用操作及Git存储原理

Git简介与使用 Intro Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git是一款分布式版本控制系统(VSC),是团队合作开发…

算法学习笔记(8.3)-(0-1背包问题)

目录 最常见的0-1背包问题: 第一步:思考每轮的决策,定义状态,从而得到dp表 第二步:找出最优子结构,进而推导出状态转移方程 第三步:确定边界条件和状态转移顺序 方法一:暴力搜素…

KBS(Knowledge-Based Systems)期刊投稿记录

记录一些关键时间节点 2023.12.31 投稿 2024.01.30 返回审稿意见 2024.05.20 提交r1 2024.05.31 返回审稿意见(conditional accept)包括语言润色 2024.06.09 提交r2,没有使用爱思维尔的润色 2024.06.10 with editor 2024.06.13 under review 2024.06.24 revise(折磨…

MFC之对话框--线宽/线型/颜色

文章目录 线宽输入实现优化无法记录上一次线粗问题 线宽滑动实现实现选择线类型实现颜色选择总结 线宽输入实现 优化无法记录上一次线粗问题 线宽滑动实现 实现选择线类型 实现颜色选择 总结 1。创建新窗口(dialog)会创建一个新的类,在类中实现窗口中的…

vue中父子传递属性值

1、父传子属性值 自定义图库组件 在add.vue中应用tuku组件并给默认值 效果 2、 子传父,逆向赋值 add.vue和第一问中一样 修改tuku组件,传值给add.vue 3、多个传递 效果: 点击两个修改按钮后 4、使用defineModel简化父子传值 其他代码跟…

【postgresql】时间函数和操作符

日期/时间操作符 加减操作符: 和 - 可以用于日期、时间、时间戳和时间间隔的加减操作。 SELECT 2024-01-01::date INTERVAL 1 day as "date"; ; -- 结果:2024-01-02SELECT 2024-01-01 12:00:00::timestamp - INTERVAL 2 hours as "…

概率论原理精解【2】

文章目录 笛卡尔积任意笛卡尔积投影映射概述详解一一、定义二、性质三、应用四、结论 详解二定义与性质应用与意义示例结论 参考文献 笛卡尔积 任意笛卡尔积 { A t , t ∈ T } \{A_t,t \in T\} {At​,t∈T}是一个集合族,其中T为一个非空指标集,称 t ∈…

CSS上下悬浮特效

要实现一个上下悬浮的特效,可以使用CSS的keyframes规则和动画属性。以下是一个简单的示例: 代码示例 /* 定义一个名为floating的动画 */ keyframes floating {0% {transform: translateY(0); /* 初始位置 */}50% {transform: translateY(-4px); /* 向上…

M1000 4G蓝牙网关:高速稳定,赋能物联网新体验

桂花网M1000的4G移动网络功能主要体现在以下几个方面: 一、高速稳定的数据传输 高速率:M1000支持4G移动网络,能够实现高速的数据传输。根据4G网络的技术标准,其理论上的最大下行速率可达到数百Mbps(如TD-LTE在20MHz带…

KALI使用MSF攻击安卓设备

这期是kali使用MSF进行安卓渗透的保姆级别教程,话不多说,直接开始。 准备材料: 1.装有kali的实体机或虚拟机(这里用实体机进行演示) 2.一台安卓10.0以下的手机 打开kali,先用ifconfig查看自己的kali IP地址…

Python3极简教程(一小时学完)下

目录 PEP8 代码风格指南 知识点 介绍 愚蠢的一致性就像没脑子的妖怪 代码排版 缩进 制表符还是空格 每行最大长度 空行 源文件编码 导入包 字符串引号 表达式和语句中的空格 不能忍受的情况 其他建议 注释 块注释 行内注释 文档字符串 版本注记 命名约定 …

[BJDCTF2020]EasySearch1

知识点: 1.swp泄露 2.md5碰撞 3.PHP代码审计 4.SSI代码执行漏洞 // Apache SSI 远程命令执行漏洞复现 看着像sql注入,不过注入无果,扫一下目录试试~ 发现是swp泄露. SWP文件泄露漏洞是指在使用 Vim编辑器 编辑一个文件时,Vim会在…

codeforce 954 div3 G2题

思路&#xff1a; 质因子分解可以顺着分解&#xff0c;也可以逆着分解 即找到每一个数字的倍数&#xff0c;再找到每一个数字的因数 const int N 5e510; vector<int> ff[N]; vector<int> f[N]; vector<int> g[N];void solve(){int n;cin>>n;vector&l…

OpenCV漫水填充函数floodFill函数的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 功能描述 ffloodFill函数是OpenCV库中用于图像处理的一个功能&#xff0c;它用于填充与种子点颜色相近的连通区域。这个函数在很多场景下都非常有用&#x…

MUR2060CTR-ASEMI无人机专用MUR2060CTR

编辑&#xff1a;ll MUR2060CTR-ASEMI无人机专用MUR2060CTR 型号&#xff1a;MUR2060CTR 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220 批号&#xff1a;最新 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;20A 最大循环峰值反向电压&#xff08;VRRM&#…

【数据结构】线性表----队列详解

1. 队列的基本概念 话不多说&#xff0c;直接开始&#xff01; 队列是一种线性数据结构&#xff0c;同栈类似但又不同&#xff0c;遵循先进先出&#xff08;FIFO, First In First Out&#xff09;的原则。换句话说&#xff0c;最先进入队列的元素会最先被移除。这样的特点使得…

小白学python(第七天)

哈哈&#xff0c;这个系列的文章也有一段时间没更新&#xff0c;主要是最近在忙c嘎嘎&#xff0c;不过没事接下来会优先更python啦&#xff0c;那么我们先进入正题吧 函数的定义及调用 函数定义 格式&#xff1a;def 函数名&#xff08;形参列表&#xff09;&#xff1a; 语…

QTabWidget、QListWidget、QStackedWidget

The QTabWidget class provides a stack of tabbed widgets. More... The QListWidget class provides an item-based list widget. More... QStringList strlist;strlist<<"系统"<<"外观"<<"截图"<<"贴图"…

.NET MAUI开源架构_4..NET MAUI 应用支持的平台

可以针对以下平台编写 .NET Multi-platform App UI (.NET MAUI) 应用&#xff1a; 需要 Android 5.0 (API 21) 或更高版本。需要 iOS 11 或更高版本使用 Mac Catalyst 的 macOS 11 或更高版本。Windows 11 和 Windows 10 版本 1809 或更高版本&#xff0c;使用 Windows UI 库 …

Java的高级特性

类的继承 继承是从已有的类中派生出新的类&#xff0c;新的类能拥有已有类的属性和行为&#xff0c;并且可以拓展新的属性和行为 public class 子类 extends 父类{子类类体 } 优点 代码的复用 提高编码效率 易于维护 使类与类产生关联&#xff0c;是多态的前提 缺点 类缺乏独…