【2.0】flask框架之配置文件

发布时间 2023-08-26 21:42:21作者: Chimengmeng

【一】引入

  • django 有settings配置文件
  • 所有web框架都会有配置文件-
  • 配置文件的形式可能不太一样

【二】flask的配置文件

【1】配置方式一(简单配置)

import uuid

from flask import Flask

app = Flask(__name__)
# 配置方式一 :只能配置 debug 和 secret_key
app.debug = True
app.secret_key = str(uuid.uuid4())


@app.route('/index', methods=['GET'])
def index():
    print(app.debug)  # True
    print(app.secret_key)  # 2536678f-fd50-4ee3-8f72-01543d2bc480
    return 'hello world'

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

【2】配置方式二(依赖app.config)

import uuid

from flask import Flask

app = Flask(__name__)

'''
<Config {
'DEBUG': False, 
'TESTING': False, 
'PROPAGATE_EXCEPTIONS': None, 
'SECRET_KEY': None, 
'PERMANENT_SESSION_LIFETIME': datetime.timedelta(days=31), 
'USE_X_SENDFILE': False, 
'SERVER_NAME': None, 
'APPLICATION_ROOT': '/', 
'SESSION_COOKIE_NAME': 'session', 
'SESSION_COOKIE_DOMAIN': None, 
'SESSION_COOKIE_PATH': None, 
'SESSION_COOKIE_HTTPONLY': True, 
'SESSION_COOKIE_SECURE': False, 
'SESSION_COOKIE_SAMESITE': None, 
'SESSION_REFRESH_EACH_REQUEST': True, 
'MAX_CONTENT_LENGTH': None, 
'SEND_FILE_MAX_AGE_DEFAULT': None, 
'TRAP_BAD_REQUEST_ERRORS': None, 
'TRAP_HTTP_EXCEPTIONS': False, 
'EXPLAIN_TEMPLATE_LOADING': False, 
'PREFERRED_URL_SCHEME': 'http', 
'TEMPLATES_AUTO_RELOAD': None, 
'MAX_COOKIE_SIZE': 4093}>
'''
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = str(uuid.uuid4())


@app.route('/index', methods=['GET'])
def index():
    print(app.debug)
    # True
    print(app.secret_key)
    # 1517038c-5414-4a3c-a1d9-3b29bc09d6a5
    return 'hello world'


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

【3】配置方式三(依赖settings)

  • settings.py
import uuid

DEBUG = True

SECRET_KEY = str(uuid.uuid4())
  • main.py
from flask import Flask

app = Flask(__name__)

# 配置方式三 :
app.config.from_pyfile('settings.py')
# 也可以通过在环境变量中配置配置文件路径的方式获取到配置文件
# app.config.from_pyfile(os.environ['YOURAPPLICATION_SETTINGS'])


@app.route('/index', methods=['GET'])
def index():
    print(app.debug)
    # True
    print(app.secret_key)
    # 87d673a5-4f54-4298-b45b-453621df298b
    return 'hello world'


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

【4】配置方式四(依赖类)

  • settings.py
# 基本配置
class Config(object):
    DEBUG = False
    TESTING = False
    DATABASE_URI = 'sqlite://:memory:'


# 生产环境
class ProductionConfig(Config):
    DATABASE_URI = 'mysql://user@localhost/foo'


# 开发环境
class DevelopmentConfig(Config):
    DEBUG = True


class TestingConfig(Config):
    TESTING = True
  • main.py
from flask import Flask

app = Flask(__name__)

# 配置方式四:
# 参数为 Python类或者类的路径
app.config.from_object('day002.settings.DevelopmentConfig')


@app.route('/index', methods=['GET'])
def index():
    print(app.debug)
    # True
    print(app.secret_key)
    # None
    return 'hello world'

【5】配置方式五(依赖json数据)

app.config.from_json("json文件名称")
# JSON文件名称,必须是json格式,因为内部会执行json.loads

【补充】配置中心

【1】介绍

  • 配置中心是一个用于管理和集中存储应用程序配置信息的平台或工具。它提供了一种集中式的方式,让开发团队可以轻松地管理和调整应用程序的配置参数,而无需修改代码或重新部署应用程序。

【2】功能

  • 集中化管理:

    • 配置中心允许集中存储和管理应用程序的配置信息。

    • 开发团队可以通过配置中心对不同环境或不同应用程序的配置进行分组和组织,以便更容易地进行管理和维护。

  • 动态更新:

    • 配置中心的一个关键功能是支持动态更新配置。

    • 这意味着当需要更改某个配置参数时,开发团队可以直接在配置中心进行修改而无需重新部署应用程序。这可以减少停机时间,并使配置变更更加灵活和高效。

  • 版本控制:

    • 配置中心可以跟踪和管理配置的版本。

    • 这使得开发团队可以了解每个配置的历史变更记录,并可以根据需要还原到特定的配置版本。

  • 安全管理:

    • 配置中心通常提供安全机制来保护敏感的配置信息。
    • 只有经过授权的用户或角色才能访问和修改配置,从而确保配置的安全性和保密性。

【3】示例

  • 举例来说,一个电子商务平台可能有各种配置参数,如数据库连接地址、支付接口地址、日志级别等。
    • 通过使用配置中心,开发团队可以将这些配置信息存储在配置中心中,并在需要时动态地进行修改。
  • 例如,如果需要更改支付接口地址,开发团队可以直接登录配置中心,找到相应的配置项,并将新的支付接口地址更新到配置中心中。
    • 此时,无需重新部署应用程序,支付接口地址将立即生效。
    • 这样,即使在运行中的系统中也能够及时调整各种配置参数,提高了系统的可维护性和灵活性。
  • 总之,配置中心是一个非常有用的工具,可以帮助开发团队有效地管理和调整应用程序的配置信息,提高开发效率和系统的可维护性。

【4】配置中心选型Nacos