烧瓶生产和开发模式

Abd*_*ILI 12 python development-environment config production-environment 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'
Run Code Online (Sandbox Code Playgroud)

Dan*_*rin 26

使用的一个约定是在启动应用程序之前指定环境变量.

例如

$ ENV=prod; python run.py
Run Code Online (Sandbox Code Playgroud)

在您的应用程序中,检查该环境变量的值以确定要使用的配置.在你的情况下:

run.py

import os
if os.environ['ENV'] == 'prod':
    config = ProductionConfig()
else:
    config = DevelopmentConfig()
Run Code Online (Sandbox Code Playgroud)

声明也值得注意

print('THIS APP IS IN DEBUG MODE. YOU SHOULD NOT SEE THIS IN PRODUCTION.')
Run Code Online (Sandbox Code Playgroud)

ENV因为解释器在运行脚本的其余部分之前执行类定义中的所有代码,所以无论您设置哪个都打印.


Nat*_*les 9

添加丹尼尔的回答:

Flask在其文档中有一个页面,讨论了这个问题.

由于您已在类中指定了配置,因此您将使用加载配置 app.config.from_object('configmodule.ProductionConfig')