web-dev-qa-db-ja.com

flask Production and development mode

フラスコを使用してアプリケーションを開発し、本番用に公開したいのですが、本番環境と開発環境(データベースとコード)を分離する方法がわかりません。 config.pyファイルで2つの環境を指定しますが、その方法はわかりません。

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'

ダニエルの答えに追加するには:

Flaskのドキュメントには、この問題を説明するページがあります。

クラスで構成を指定したので、app.config.from_object('configmodule.ProductionConfig')を使用して構成をロードします。

9
Nathan Wailes

使用される規則の1つは、アプリケーションを開始する前に環境変数を指定することです。

例えば

$ 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を設定しても印刷されます。

23
Daniel Corin