当前位置: 首页 > news >正文

03-Flask-工程配置加载方式

工程配置加载方式

      • 前言
      • 配置对象中加载
      • 配置文件中加载
      • 环境变量中加载
      • 三种配置方式优缺点
      • 工厂模式创建Flask app


前言

  • 本篇来学习下Flake工程配置加载方式

配置对象中加载

  • 应用场景:作为默认配置写在代码中
# -*- coding: utf-8 -*-
# @Time    : 2023/9/2
# @Author  : 大海
from flask import Flaskclass DefaultConfig(object):"""默认配置"""MYSQL_HOST = '192.168.66.66'app = Flask(__name__)# 设置配置对象方式读取配置
app.config.from_object(DefaultConfig)@app.route('/')
def index():# 读取配置,相当于字典中取值mysql_host = app.config.get('MYSQL_HOST')# mysql_host = app.config['MYSQL_HOST']print(mysql_host)return '<b>Hello 大海!</b>'if __name__ == '__main__':app.run()

配置文件中加载

  • 应用场景:项目中使用固定的配置文件
# setting.py
# -*- coding: utf-8 -*-
# @Time    : 2023/9/2
# @Author  : 大海MYSQL_HOST = '192.168.88.88'
# -*- coding: utf-8 -*-
# @Time    : 2023/9/2
# @Author  : 大海from flask import Flaskapp = Flask(__name__)# 设置配置文件方式加载配置
app.config.from_pyfile('setting.py')@app.route('/')
def index():# 读取配置,相当于字典中取值mysql_host = app.config.get('MYSQL_HOST')# mysql_host = app.config['MYSQL_HOST']print(mysql_host)return '<b>Hello 大海!配置文件方式加载配置。</b>'if __name__ == '__main__':app.run()

环境变量中加载

  • 先设置环境变量
# export 变量名=配置文件名   Linux系统环境中使用
export PROJECT_SETTING=setting.py
# -*- coding: utf-8 -*-
# @Time    : 2023/9/2
# @Author  : 大海from flask import Flaskapp = Flask(__name__)# 设置环境变量方式加载配置
app.config.from_envvar('PROJECT_SETTING', silent=True)@app.route('/')
def index():# 读取配置,相当于字典中取值mysql_host = app.config.get('MYSQL_HOST')# mysql_host = app.config['MYSQL_HOST']print(mysql_host)  return '<b>Hello 大海!环境变量方式加载配置。</b>'if __name__ == '__main__':app.run()

silent 参数说明:

  1. Flase:没找到变量值时,报错通知,默认为Flase
  2. True:没找到变量值时也正常运行下去

三种配置方式优缺点

  1. 配置对象
    • 优点:继承,可复用
    • 缺点:敏感数据暴露代码中
  2. 配置文件
    • 优点:独立配置文件,保护敏感数据
    • 缺点:不能继承,文件路径固定,不灵活
  3. 环境变量
    • 优点:独立配置文件,保护敏感数据,文件路径不固定,灵活
    • 缺点: 不方便,要记得设置环境变量

工厂模式创建Flask app

# -*- coding: utf-8 -*-
# @Time    : 2023/9/2
# @Author  : 大海from flask import Flaskclass DefaultConfig(object):"""默认配置"""MYSQL_HOST = '192.168.66.66'def create_flask_app(config):app = Flask(__name__)# 设置配置对象方式读取配置app.config.from_object(config)# 设置环境变量方式加载配置app.config.from_envvar('PROJECT_SETTING', silent=True)return appapp = create_flask_app(DefaultConfig)@app.route('/')
def index():# 读取配置,相当于字典中取值mysql_host = app.config.get('MYSQL_HOST')# mysql_host = app.config['MYSQL_HOST']print(mysql_host)return '<b>Hello 大海!</b>'if __name__ == '__main__':app.run()

相关文章:

03-Flask-工程配置加载方式

工程配置加载方式 前言配置对象中加载配置文件中加载环境变量中加载三种配置方式优缺点工厂模式创建Flask app 前言 本篇来学习下Flake工程配置加载方式 配置对象中加载 应用场景&#xff1a;作为默认配置写在代码中 # -*- coding: utf-8 -*- # Time : 2023/9/2 # Autho…...

Orangepi安装外设库 wiringPi

注意&#xff1a;mobaXterm传送文件要在SSH登陆环境下才可以。 同时电脑和orangepi都在同一个wifi下。...

[dasctf]misc3 chrchrchr.pcapng

webshell 流量分析 php代码部分没啥看的&#xff0c;主要在标黄的部分&#xff0c;裁剪掉前面的字符可base解码 能看到在向a.txt中写入数据 wp # tshark.exe -r chrchrchr.pcapng -T fields -e urlencoded-form.value -Y "urlencoded-form.keyzd2ebbfb26dd" >…...

微服务--Sentinel(实现:服务高可用)

内存溢出&#xff1a;OOM 服务器挂掉的原因&#xff1a; 1.激增流量打垮&#xff1a; 1.流量突然飙升&#xff0c;导致CPU上升&#xff0c;出现挂机 2.负载不均&#xff1a;比如一个实例长期未重启&#xff0c;导致磁盘写满降低响应时间等。 3.线程池满&#xff0c;单点故障&…...

【MySQL】4、MySQL备份与恢复

备份的主要目的是灾难恢复&#xff0c;备份还可以测试应用、回滚数据修改、查询历史数据、审计等 MySQL日志管理 MySQL 的日志默认保存位置为 /usr/local/mysql/data #配置文件 vim /etc/my.cnf 日志的分类 常见日志有&#xff1a; 错误日志&#xff0c;一般查询日志&…...

python后端,一个账户,多设备登录管理

一个账号&#xff0c;多台设备同时登陆的问题&#xff0c;设计以及实现 参考这篇文章&#xff1a; https://www.alibabacloud.com/help/zh/tair/use-cases/manage-multi-device-logon-from-a-single-user-by-using-tairhash1.0 设计思路 利用的是Redis&#xff0c;主设备的保…...

Django实现音乐网站 ⒁

使用Python Django框架制作一个音乐网站&#xff0c; 本篇主要是歌手页-全部歌手页功能开发。 目录 分出首页样式内容 创建首页样式文件 首页引入样式文件 全部歌手列表 创建路由 显示视图 引入分页实现库 视图方法 创建歌手首页 增加歌手跳转 导航条改活 首页增加…...

服务器监控可视化

IT监控可视化是一种将IT监控数据以图形化的方式呈现给用户的技术&#xff0c;可以帮助用户更直观、更易懂地了解IT系统的运行状况。服务器监控可视化是其中的一个重要应用场景&#xff0c;可以将服务器的各种性能指标以图表、仪表盘等形式展示&#xff0c;以便管理员更好地了解…...

Redis网络模型

目录 Redis网络模型 用户空间和内核态空间 阻塞IO(BIO) 非阻塞IO(NIO) IO多路复用 信号驱动IO 异步IO(AIO) Redis到底是单线程还是多线程&#xff1f; 为什么要使用单线程&#xff1f; Redis网络模型 进程的寻址空间会划分为两部分&#xff1a;内核空间、用户空间 用…...

Super Resolve Dynamic Scene from Continuous Spike Streams论文笔记

摘要 近期&#xff0c;脉冲相机在记录高动态场景中展示了其优越的潜力。不像传统相机将一个曝光时间内的视觉信息进行压缩成像&#xff0c;脉冲相机连续地输出二的脉冲流来记录动态场景&#xff0c;因此拥有极高的时间分辨率。而现有的脉冲相机重建方法主要集中在重建和脉冲相…...

操作视频的开始与暂停

调用 ref.current.play() 方法来播放视频&#xff1b; 如果视频需要暂停&#xff0c;我们调用 ref.current.pause() 方法来暂停视频。 通过 useRef 创建的 ref 操作视频的开始与暂停 当用户点击按钮时&#xff0c;根据当前视频的状态&#xff0c;我们会开始或暂停视频&…...

使用Docker配置深度学习的运行环境

文章目录 推荐实验环境前言docker安装docker操作docker配置常见方法&#xff08;安装包、联网、程序管理器&#xff09;安装驱动的前提要求传统方法安装驱动程序程序管理器安装联网安装deb包安装 安装完成后的设置非传统方法安装-通过容器安装驱动的前提要求安装NVIDIA-Contain…...

三相PMSM的坐标变换

三相PMSM的坐标变换 三相PMSM的数学模型具有复杂性和耦合性的多变量系统。因此需要对其进行降阶和解耦变换。 Vα&#xff0c;Vb&#xff0c;Vc是自然坐标系。 Vα&#xff0c;Vβ是静止坐标系。 Vd&#xff0c;Vq是同步旋转坐标系。 自然坐标系 三相永磁同步电机的驱动电路…...

8.(Python数模)(预测模型一)马尔科夫链预测

Python实现马尔科夫链预测 马尔科夫链原理 马尔科夫链是一种进行预测的方法&#xff0c;常用于系统未来时刻情况只和现在有关&#xff0c;而与过去无关。 用下面这个例子来讲述马尔科夫链。 如何预测下一时刻计算机发生故障的概率&#xff1f; 当前状态只存在0&#xff08;故…...

Leetcode1006笨阶乘

思路&#xff1a;以4为一个分组分别进行处理 class Solution:def clumsy(self, n: int) -> int:answer_dict {0:0,1: 1, 2: 2, 3: 6, 4: 7}if n > 4:answer n * (n - 1) // (n - 2) n - 3n - 4else:print(answer_dict[n])return answer_dict[n]print(answer)while n …...

阻塞非阻塞IO(BIO和NIO),IO多路复用

1.概念 NIO&#xff08;New Input/Output&#xff09;和BIO&#xff08;Blocking Input/Output&#xff09;是Java中用于处理输入输出的两种不同的模型。 BIO 会阻塞&#xff0c;等有了消息&#xff0c;立刻返回&#xff0c;一个线程处理一个recv&#xff08;需要很多线程&…...

HTTP协议初识·中篇

加上目录&#xff0c;会出现导向不正确的情况&#xff0c;可能是bug&#xff0c;目录一长就容易出错&#xff1f; 本篇主要讲解了&#xff1a; 网页分离(网页代码和.c文件分离) html链接跳转 网页添加图片 确认并返回资源类型 填写正文长度属性 添加表单 临时重定向 补充知识&a…...

数学建模:拟合算法

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 数学建模&#xff1a;拟合算法 文章目录 数学建模&#xff1a;拟合算法拟合算法多项式拟合非线性拟合cftool工具箱的使用 拟合算法 根据1到12点间的温度数据求出温度与时间之间的近似函数关系 F ( t ) F(…...

计算机网络-笔记-汇总

目录 &#x1f4da; 前言 &#x1f338;章节汇总 &#x1f680; 学习心得 ⌛2023年8月31日 星期四 &#x1f4da; 前言 在学习了【操作系统】、【计算机组成原理】之后 再来学习【计算机网络】&#xff0c;对计算机之间如何通信&#xff0c;有了一个大致的认识。 可以想象…...

STM32定时器定时及其应用

STM32定时器定时及其应用 定时器概述☆定时器相关配置CubeMX工程配置及程序实现固件库程序设计及实现 定时器概述 1. 工作原理 使用精准的时基&#xff0c;通过硬件的方式&#xff0c;实现定时功能。定时器核心就是计数器 2. 定时器分类   基本定时器&#xff08;TIM6~TIM7…...

Flutter开发必备:GetX路由管理实战技巧(含完整Demo)

Flutter开发必备&#xff1a;GetX路由管理实战技巧&#xff08;含完整Demo&#xff09; 如果你正在使用Flutter开发应用&#xff0c;却对原生路由管理的繁琐感到头疼&#xff0c;GetX的路由管理方案或许能让你眼前一亮。这个轻量级库不仅简化了页面跳转、传值等基础操作&#x…...

i.MX6ULL镜像制作避坑指南:为什么你的SD卡启动失败?从分区表到文件系统的深度解析

i.MX6ULL镜像制作避坑指南&#xff1a;为什么你的SD卡启动失败&#xff1f;从分区表到文件系统的深度解析 当你在深夜调试i.MX6ULL开发板&#xff0c;反复确认每个步骤都按教程操作&#xff0c;却依然遭遇SD卡启动失败时&#xff0c;那种挫败感每个嵌入式开发者都深有体会。本文…...

comsol仿真建模 由于结构本身的复杂性,很难对实际多孔结构中的流动进行建模。 在实际应用中...

comsol仿真建模 由于结构本身的复杂性&#xff0c;很难对实际多孔结构中的流动进行建模。 在实际应用中&#xff0c;详细求解流场不可行。 因此&#xff0c;使用了利用多孔结构平均物理量 &#xff08;如孔隙率和渗透率&#xff09;的宏观方法。 本例详细分析孔隙尺度的流场&am…...

如何将MacBook刘海变成你的私人文件中转站:NotchDrop完整使用指南

如何将MacBook刘海变成你的私人文件中转站&#xff1a;NotchDrop完整使用指南 【免费下载链接】NotchDrop Use your MacBooks notch like Dynamic Island for temporary storing files and AirDrop 项目地址: https://gitcode.com/gh_mirrors/no/NotchDrop 你是否曾觉得…...

告别显卡驱动残留困扰:Display Driver Uninstaller的深度清理全解析

告别显卡驱动残留困扰&#xff1a;Display Driver Uninstaller的深度清理全解析 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers…...

Sycamore与Leptos、Dioxus对比:如何选择最适合的Rust前端框架

Sycamore与Leptos、Dioxus对比&#xff1a;如何选择最适合的Rust前端框架 【免费下载链接】sycamore A library for creating reactive web apps in Rust and WebAssembly 项目地址: https://gitcode.com/gh_mirrors/sy/sycamore 在Rust前端开发领域&#xff0c;Sycamor…...

5种颠覆式UI控件库轮播组件创新用法:从业务痛点到零代码实现

5种颠覆式UI控件库轮播组件创新用法&#xff1a;从业务痛点到零代码实现 【免费下载链接】HandyControl Contains some simple and commonly used WPF controls 项目地址: https://gitcode.com/gh_mirrors/ha/HandyControl 在现代WPF应用开发中&#xff0c;UI控件库的轮…...

PROJECT MOGFACE技术解析:深入理解LSTM在序列建模中的替代与增强

PROJECT MOGFACE技术解析&#xff1a;深入理解LSTM在序列建模中的替代与增强 1. 引言 如果你在几年前接触过自然语言处理或者语音识别&#xff0c;那么“LSTM”这个词对你来说一定不陌生。它曾经是处理序列数据的黄金标准&#xff0c;从机器翻译到语音合成&#xff0c;几乎无…...

Alibaba DASD-4B Thinking 对话工具应用:自动化软件测试用例生成与评审

Alibaba DASD-4B Thinking 对话工具应用&#xff1a;自动化软件测试用例生成与评审 每次新版本上线前&#xff0c;测试团队是不是都忙得焦头烂额&#xff1f;产品需求文档改了又改&#xff0c;测试用例也得跟着一遍遍更新&#xff0c;手动编写不仅耗时&#xff0c;还容易遗漏边…...

重新定义开源RTS体验:Beyond All Reason深度技术解析

重新定义开源RTS体验&#xff1a;Beyond All Reason深度技术解析 【免费下载链接】Beyond-All-Reason www.beyondallreason.info 项目地址: https://gitcode.com/gh_mirrors/be/Beyond-All-Reason Beyond All Reason是一款基于Spring引擎开发的开源实时战略游戏&#xf…...