Flask后端实践 连载一 加载yaml配置文件

Flask 加载yaml配置文件

tips:

项目场景

某天,项目经理A要求所有的配置文件需要可以配置,并且需要用yaml格式的文件进行配置。方便以后对配置文件的修改以及读取不同的配置内容,而不是在代码中修改配置信息。

什么是yaml文件?

YAML是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互。YAML类似于XML,JSON等,但是语法简单得多,对于转化成数组或可以hash的数据时是很简单有效的。详细了解

如何编写yaml文件?

# yaml格式
name: 张三
age: 37
children:
 - name: 小明
   age: 15
 - name: 小红
   age: 12

上面这段代码在python中具体输出如下:

{
'name': '张三', 'age': 37, 
'children': [{'name': '小明', 'age': 15}, {'name': '小红', 'age': 12}]
}

从上面可以看出,通过yaml文件的简单书写,便能转换为python中的字典以及列表字典。
yaml文件编写规则:

Flask加载yaml配置文件

  • 创建虚拟环境,启用虚拟环境
  • 安装PyYAML pip install PyYAML
  • 安装Flask pip install Flask

编写一个配置文件(setting.yaml)如下:

COMMON: &common
  SECRET_KEY: insecure
  DEBUG: False
  
DEVELOPMENT: &development
  <<: *common
  DEBUG: True
  
STAGING: &staging
  <<: *common
  SECRET_KEY: sortasecure

PRODUCTION: &production
  <<: *common
  SECRET_KEY: mdd1##$$%^!DSA#FDSF

编写读取yaml文件函数(read_yaml)

import yaml
def read_yaml(yaml_file_path):
    with open(yaml_file_path, 'rb') as f:
        cf= f.read()
    cf = yaml.load(cf)
return cf

flask加载yaml文件配置

from flask import Flask
app = Flask(__name__)
cf = read_yaml("setting.yaml")
app.config.update(cf)

完整代码(app.py)

from flask import Flask
import yaml
def read_yaml(yaml_file_path):
    with open(yaml_file_path, 'rb') as f:
        cf= yaml.safe_load(f.read()) # yaml.load(f.read())
return cf

app = Flask(__name__)
cf = read_yaml("setting.yaml")
app.config.update(cf)

if __name__ == "__main__":
    app.run()

工厂模式

  • 文件目录
-----app
│    │    
│    factoty.py
-----config
|    |
|    config.yaml
run.py
  • 配置文件(config.yaml)
COMMON: &common #标识
  DEBUG: False
  SECRET_KEY: insecure

DEVELOPMENT: &development
  <<: *common # 继承common,没有重新定义的变量,使用common变量值
  DEBUG: True
  
STAGING: &staging
  <<: *common
  SECRET_KEY: sortasecure

PRODUCTION: &production
  <<: *common
  SECRET_KEY: mdd1##$$%^!DSA#FDSF
  • 工厂文件(factory.py)
import yaml
import os
from flask import Flask
def create_app(config_name=None, config_path=None):
	app = Flask(__name__)
    # 读取配置文件
    if not config_path:
        pwd = os.getcwd()
        config_path = os.path.join(pwd, 'config/config.yaml')
    if not config_name:
        config_name = 'PRODUCTION'
    conf = read_yaml(config_name, config_path)
    app.config.update(conf)
    return app
    
def read_yaml(config_name,config_path):
	""" 
	config_name:需要读取的配置内容
	config_path:配置文件路径
	"""
	if config_name and config_path:
        with open(config_path, 'r') as f:
            conf =  yaml.safe_load(f.read()) # yaml.load(f.read())
        if config_name in conf.keys():
            return conf[config_name.upper()]
        else:
            raise KeyError('未找到对应的配置信息')
    else:
        raise ValueError('请输入正确的配置名称或配置文件路径')
  • 运行文件(run.py)
from app import factory
app = factory.create_app(config_name='DEVELOPMENT')

if __name__ == "__main__":
    app.run()

总结

  • yaml编写配置文件,简单高效。
  • 编写不同的配置内容,方便生产开发测试使用。
  • 目前实现了flask加载yaml配置文件,后续的文章还有更多关于yaml文件配置flask内容。
  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 好的,这是如何使用 PythonFlask 来构建一个后端的基本流程: 1. 安装 Flask:使用 pip 安装 Flask 库:`pip install Flask` 2. 创建一个 Flask 应用:创建一个名为 app.py 的文件,并在该文件中导入 Flask 库。 3. 编写 Flask 应用:在 app.py 文件中,使用 Flask 库创建一个 Flask 应用。 4. 定义路由:使用 Flask 应用定义路由,即 URL 地址。 5. 启动服务器:使用 Flask 应用启动服务器,以便对外提供服务。 以下是一个简单的 Flask 应用的示例代码: ``` from flask import Flask app = Flask(__name__) @app.route("/") def home(): return "Hello, Flask!" if __name__ == "__main__": app.run() ``` 运行这段代码,Flask 将在本地启动一个服务器,可以通过浏览器访问 http://localhost:5000/ 来查看 "Hello, Flask!" 的结果。 ### 回答2: Python是一种高级编程语言,具有简单易学、语法优雅、功能强大等优点,广泛应用于Web开发。而Flask是一个基于Python的轻量级Web应用框架,非常适合用于构建后端服务。 使用Python编写Flask后端可以实现各种功能和需求,比如处理用户请求、数据存储和查询、业务逻辑处理等。下面是一个简单的示例: 首先,我们需要导入Flask库和相关的依赖库: ``` from flask import Flask, request, jsonify ``` 然后,我们创建一个Flask应用程序: ``` app = Flask(__name__) ``` 接下来,我们可以使用装饰器`@app.route()`来定义路由和请求方法,比如处理一个GET请求: ``` @app.route('/api/users', methods=['GET']) def get_users(): # 处理GET请求逻辑 return jsonify({'users': ['user1', 'user2', 'user3']}) ``` 这个例子展示了一个简单的GET请求处理函数,当用户请求`/api/users`时,会返回一个包含用户列表的JSON响应。 除了GET请求,Flask还支持POST、PUT、DELETE等其他请求方法,我们可以使用类似的方式来定义对应的处理函数。 最后,我们需要运行Flask应用程序来启动后端服务: ``` if __name__ == '__main__': app.run() ``` 上述是一个简单的Flask后端示例,实际的应用中会根据具体需求进行不同的处理,比如连接数据库、认证授权、数据校验等。同时,Flask还提供了丰富的扩展和插件,可以更便捷地实现各种功能。 总之,使用Python编写Flask后端可以快速构建可靠、高效的Web服务,满足不同的业务需求。 ### 回答3: Python是一种强大且广泛使用的编程语言,它有许多成熟的框架可以帮助开发人员快速构建各种应用程序。Flask是其中之一,它是一个轻量级的Web应用程序框架,非常适合初学者或小型项目。 使用Python编写一个Flask后端可以带来以下好处: 1. 简单易用:Flask提供简洁的API和灵活的设计模式,使得编写后端逻辑更加直观和易于维护。 2. 快速开发:Python的语法简洁明了,配合Flask框架的扩展,可以快速构建一个功能完善的Web应用程序。 3. 良好的可扩展性:Flask支持各种第三方插件和扩展,可以非常容易地集成其他功能,如数据库连接、缓存、认证等。 4. 丰富的生态系统:PythonFlask都有庞大的生态系统,社区提供了大量的文档、教程和开源项目,开发者可以借鉴和复用这些资源。 编写一个Flask后端的步骤如下: 1. 安装PythonFlask:首先确保在计算机上安装了PythonFlask库,可以通过命令行运行pip install flask来安装。 2. 创建Flask应用:创建一个Python脚本,导入Flask库并初始化一个Flask应用对象。 3. 定义路由和视图函数:使用@app.route装饰器定义URL路由和对应的视图函数,视图函数负责处理请求并返回响应。 4. 处理请求和响应:在视图函数中,可以使用Flask提供的request对象获取请求参数,使用Flask提供的response对象构造响应内容。 5. 启动Flask应用:在脚本的末尾,添加启动应用的代码,通常是app.run()。 6. 测试应用:使用浏览器或HTTP客户端工具发送请求,检查应用是否能正确处理并返回响应。 总结来说,使用Python编写Flask后端可以快速创建一个功能完善的Web应用程序,而且还具备良好的可扩展性和丰富的生态系统。无论是初学者还是有经验的开发者,都可以轻松上手并发挥PythonFlask的优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值