在我的Flask应用程序中,一旦部署了应用程序,config.py
我将拥有LocalConfig
并且ProdConfig
后者将用于生产中。
现在,我使用的uWsgi
服务应用Nginx
,这里的myapp.wsgi
我已经建立。
from myapp import create_app
from myapp.config import ProdConfig
app = create_app(config=ProdConfig)
并且其中之一app.py
create_app
定义为:
def create_app(config=None, app_name=None, blueprints=None):
# some code
app = Flask(app_name, instance_path=INSTANCE_FOLDER_PATH, instance_relative_config=True)
configure_app(app, config)
# some other code
return app
def configure_app(app, config=None):
"""Different ways of configurations."""
app.config.from_object(LocalConfig)
app.config.from_pyfile('production.cfg', silent=True)
if config:
app.config.from_object(config)
我想知道uWSGI
吗?uWSGI是否能够ProdConfig
成功应用?
还是使用环境变量来区分不同的配置设置更好?喜欢if os.environ.get('PROD', True): #do something
吗?
哪种方法更好?Flask的create_app()
一个还是env变量的一个?还有其他合适的方法吗?
常用的方法是将配置存储在字典中。
class Config:
ALL_CAPS_CONFIG = 'SOME VALUE'
class DevConfig(Config):
pass
class TestConfig(Config):
pass
class ProdConfig(Config):
pass
configs = {
'dev' : DevConfig,
'test' : TestConfig,
'prod' : ProdConfig,
'default' : ProdConfig
}
然后在实际创建应用的地方,您将执行以下操作:
from config import configs
import os
evn = os.environ.get('MY_FLASK_APP_ENV', 'default')
create_app(config=configs[evn])
这样,您可以通过更改Shell中的变量轻松地在环境之间切换。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句