wake-up-neo.com

flask Produktions- und Entwicklungsmodus

Ich habe eine Anwendung mit flask entwickelt und möchte sie für die Produktion veröffentlichen, aber ich weiß nicht, wie ich eine Trennung zwischen Produktions- und Entwicklungsumgebung (Datenbank und Code) vornehmen soll. Haben Sie Dokumente, die mir helfen oder Code? Ich gebe in der config.py-Datei die beiden Umgebungen an, weiß aber nicht, wie ich damit umgehen soll.

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'

Um zu Daniels Antwort hinzuzufügen:

Flask hat eine Seite in seiner Dokumentation, die genau dieses Problem behandelt.

Da Sie Ihre Konfiguration in Klassen angegeben haben, würden Sie Ihre Konfiguration mit app.config.from_object('configmodule.ProductionConfig') laden.

9
Nathan Wailes

Eine Konvention besteht darin, eine Umgebungsvariable anzugeben, bevor Sie Ihre Anwendung starten.

Beispielsweise

$ ENV=prod; python run.py

In Ihrer App überprüfen Sie den Wert dieser Umgebungsvariablen, um festzustellen, welche Konfiguration verwendet werden soll. In deinem Fall:

run.py

import os
if os.environ['ENV'] == 'prod':
    config = ProductionConfig()
else:
    config = DevelopmentConfig()

Es ist auch erwähnenswert, dass die Aussage

print('THIS APP IS IN DEBUG MODE. YOU SHOULD NOT SEE THIS IN PRODUCTION.')

gibt aus, egal welches ENV Sie festgelegt haben, da der Interpreter den gesamten Code in den Klassendefinitionen ausführt, bevor der Rest des Skripts ausgeführt wird.

23
Daniel Corin