回顾
先来看一下上一篇的部分代码,我们会发现,在启动服务、日志服务等等中,我们很多参数都是固定传输的,如果后期我们想要针对这些东西进行更改,需要在我们已经扩展好的Web服务中一个一个去找,那在此我干嘛不用一个config.py统一进行管理呢,然后所有的固定参数都去配置文件中取,这样我们只需要更改配置文件中的数据,即可对服务生效。
好处
配置文件(config file)的好处是可以将程序所需的参数和选项以及其对应的值都保存在一个文件中,这样就可以在不修改程序代码的情况下修改这些参数和选项的值。这样的设计可以让程序更加灵活,更易于维护和修改。在实际开发中,配置文件通常用于存储一些常量或配置项,如数据库连接信息、调试模式、日志级别等。使用配置文件可以让我们避免在程序中硬编码这些常量或配置项,从而使程序更加易于维护和修改。
选型
config.yaml:
config.yaml 是一个 YAML 格式的文件,其中定义了一些键值对,通常用于存储一些简单的配置信息,例如端口号、日志级别、缓存大小等等。config.yaml 的优点在于,它比 Python 代码更易读,可以方便地进行跨平台、跨语言的配置共享。
config.py:
config.py 是一个 Python 脚本文件,其中定义了一些变量和函数,这些变量和函数可以在其他 Python 程序中被引用。通常情况下,config.py 被用来存储一些与应用程序相关的配置信息,例如数据库连接信息、API 认证信息等等。config.py 的好处在于,它可以直接调用 Python 代码,因此可以方便地进行一些复杂的配置。
在此选择config.py作为我们配置文件的编写,当然大家也可以选择config.yaml,配置文件的形式有很多种,这里不做概述。使用config.py的原因,只是因为说了这次是从0-1带大家编写服务,如果采用yaml文件,在此会增添一些技术栈,不利于小白入门。
编写:
新增文件abandon-server/config.py,编辑以下内容:
# 基础配置类
import os
class AbandonConfig(object):
# 项目根目录
PATH: str = os.path.dirname(os.path.abspath(__file__))
# 日志配置信息
LOG_DIR: str = 'logs' # 日志存放的目录名称
LOG_ROTATE: str = '1' # 日志多久分割一次,单位day
LOG_SAVE: str = '7' # 日志留存多久,单位day
# 服务信息
SERVER_HOST: str = "127.0.0.1"
SERVER_PORT: int = 9923
if __name__ == '__main__':
print(AbandonConfig.LOG_ROTATE)
应用
将代码中所有的固定数值,都转换为使用config配置
- 使用
from config import AbandonConfig引入config配置信息 - 在需要使用的位置上,使用
AbandonConfig.属性来引入config配置信息
如:main.py中的服务启动,可更改为:
if __name__ == "__main__":
uvicorn.run(app=abandon, host=AbandonConfig.SERVER_HOST, port=AbandonConfig.SERVER_PORT)
同理其他位置不做概述,且引入config配置可改掉一个日志配置文件的bug,不影响功能,小白可不管,且config配置中固定设置项目根路径,会在后续很多地方用到。
验证
将文件中固定数值改为引用config.py配置信息后,重新启动服务,可以正常运行服务,日志信息正常打印,即完成此篇!