通过 TOML 文件配置 Python Flask RESTplus 应用程序
Configure Python Flask RESTplus app via TOML file
基于 Configuration Handling Documents for Flask the section of Configuring from Files 提到了使用文件配置应用程序的可能性,但是它没有提供示例或提及不是 Python 文件 的文件.
是否可以通过 config.yml
或 config.toml
等文件配置应用程序?
我当前的 flask 应用程序具有针对两个不同数据库的配置,并且由于我使用的是 flask-restplus
,因此有针对 Swagger 文档的其他配置。
片段:
from flask import Flask
app = Flask(__name__)
def configure_app(flask_app):
# MongoDB Setting
flask_app.config['MONGO_URI'] = 'mongodb://user:password@mongo_db_endpoint:37018/myDB?authSource=admin'
flask_app.config['MONGO_DBNAME'] = 'myDB'
# InfluxDB Setting
flask_app.config['INFLUXDB_HOST'] = 'my_influxdb_endpoint'
flask_app.config['INFLUXDB_PORT'] = 8086
flask_app.config['INFLUXDB_USER'] = 'influx_user'
flask_app.config['INFLUXDB_PASSWORD'] = 'influx_password'
flask_app.config['INFLUXDB_SSL'] = True
flask_app.config['INFLUXDB_VERIFY_SSL'] = False
flask_app.config['INFLUXDB_DATABASE'] = 'IoTData'
# Flask-Restplus Swagger Configuration
flask_app.config['RESTPLUS_SWAGGER_UI_DOC_EXPANSION'] = 'list'
flask_app.config['RESTPLUS_VALIDATE'] = True
flask_app.config['RESTPLUS_MASK_SWAGGER'] = False
flask_app.config['ERROR_404_HELP'] = False
def main():
configure_app(app)
if __name__ == "__main__":
main()
我想避免设置大量环境变量并希望使用 config.toml
文件配置它们?
这在 flask
中是如何实现的?
您可以使用 .cfg
文件和 from_envvar
来实现这一点。使用所有环境变量创建配置文件。
my_config.cfg
MONGO_URI=mongodb://user:password@mongo_db_endpoint:37018
..
..
ERROR_404_HELP=False
然后设置环境变量APP_ENVS=my_config.cfg
。现在你需要做的就是使用 Flask 给出的from_envvars。
def configure_app(flask_app):
flask_app.config.from_envvar('APP_ENVS')
# configure any other things
# register blue prints if you have any
基于 Configuration Handling Documents for Flask the section of Configuring from Files 提到了使用文件配置应用程序的可能性,但是它没有提供示例或提及不是 Python 文件 的文件.
是否可以通过 config.yml
或 config.toml
等文件配置应用程序?
我当前的 flask 应用程序具有针对两个不同数据库的配置,并且由于我使用的是 flask-restplus
,因此有针对 Swagger 文档的其他配置。
片段:
from flask import Flask
app = Flask(__name__)
def configure_app(flask_app):
# MongoDB Setting
flask_app.config['MONGO_URI'] = 'mongodb://user:password@mongo_db_endpoint:37018/myDB?authSource=admin'
flask_app.config['MONGO_DBNAME'] = 'myDB'
# InfluxDB Setting
flask_app.config['INFLUXDB_HOST'] = 'my_influxdb_endpoint'
flask_app.config['INFLUXDB_PORT'] = 8086
flask_app.config['INFLUXDB_USER'] = 'influx_user'
flask_app.config['INFLUXDB_PASSWORD'] = 'influx_password'
flask_app.config['INFLUXDB_SSL'] = True
flask_app.config['INFLUXDB_VERIFY_SSL'] = False
flask_app.config['INFLUXDB_DATABASE'] = 'IoTData'
# Flask-Restplus Swagger Configuration
flask_app.config['RESTPLUS_SWAGGER_UI_DOC_EXPANSION'] = 'list'
flask_app.config['RESTPLUS_VALIDATE'] = True
flask_app.config['RESTPLUS_MASK_SWAGGER'] = False
flask_app.config['ERROR_404_HELP'] = False
def main():
configure_app(app)
if __name__ == "__main__":
main()
我想避免设置大量环境变量并希望使用 config.toml
文件配置它们?
这在 flask
中是如何实现的?
您可以使用 .cfg
文件和 from_envvar
来实现这一点。使用所有环境变量创建配置文件。
my_config.cfg
MONGO_URI=mongodb://user:password@mongo_db_endpoint:37018
..
..
ERROR_404_HELP=False
然后设置环境变量APP_ENVS=my_config.cfg
。现在你需要做的就是使用 Flask 给出的from_envvars。
def configure_app(flask_app):
flask_app.config.from_envvar('APP_ENVS')
# configure any other things
# register blue prints if you have any