烧瓶生产发展模式
flask production and development mode
我用flask开发了一个应用,想发布到生产环境,但是我不知道如何分离生产环境和开发环境(数据库和代码),有没有文档帮我或代码。
我在config.py文件中指定了两个环境,但我不知道如何处理。
class DevelopmentConfig(Config):
"""
Development configurations
"""
DEBUG = True
SQLALCHEMY_ECHO = True
ASSETS_DEBUG = True
DATABASE = 'teamprojet_db'
print('THIS APP IS IN DEBUG MODE. YOU SHOULD NOT SEE THIS IN PRODUCTION.')
class ProductionConfig(Config):
"""
Production configurations
"""
DEBUG = False
DATABASE = 'teamprojet_prod_db'
使用的一个约定是在启动应用程序之前指定一个环境变量。
例如
$ ENV=prod; python run.py
在您的应用中,您检查该环境变量的值以确定要使用的配置。你的情况:
run.py
import os
if os.environ['ENV'] == 'prod':
config = ProductionConfig()
else:
config = DevelopmentConfig()
另外值得注意的是声明
print('THIS APP IS IN DEBUG MODE. YOU SHOULD NOT SEE THIS IN PRODUCTION.')
无论您设置哪个 ENV
都会打印,因为解释器会在 运行 脚本的其余部分之前执行 class 定义中的所有代码。
添加到 Daniel 的回答中:
Flask has a page in its documentation that discusses this very issue.
由于您已经在 类 中指定了您的配置,您将使用 app.config.from_object('configmodule.ProductionConfig')
加载您的配置
我用flask开发了一个应用,想发布到生产环境,但是我不知道如何分离生产环境和开发环境(数据库和代码),有没有文档帮我或代码。 我在config.py文件中指定了两个环境,但我不知道如何处理。
class DevelopmentConfig(Config):
"""
Development configurations
"""
DEBUG = True
SQLALCHEMY_ECHO = True
ASSETS_DEBUG = True
DATABASE = 'teamprojet_db'
print('THIS APP IS IN DEBUG MODE. YOU SHOULD NOT SEE THIS IN PRODUCTION.')
class ProductionConfig(Config):
"""
Production configurations
"""
DEBUG = False
DATABASE = 'teamprojet_prod_db'
使用的一个约定是在启动应用程序之前指定一个环境变量。
例如
$ ENV=prod; python run.py
在您的应用中,您检查该环境变量的值以确定要使用的配置。你的情况:
run.py
import os
if os.environ['ENV'] == 'prod':
config = ProductionConfig()
else:
config = DevelopmentConfig()
另外值得注意的是声明
print('THIS APP IS IN DEBUG MODE. YOU SHOULD NOT SEE THIS IN PRODUCTION.')
无论您设置哪个 ENV
都会打印,因为解释器会在 运行 脚本的其余部分之前执行 class 定义中的所有代码。
添加到 Daniel 的回答中:
Flask has a page in its documentation that discusses this very issue.
由于您已经在 类 中指定了您的配置,您将使用 app.config.from_object('configmodule.ProductionConfig')