当前位置: 首页 > 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…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...