web-dev-qa-db-fra.com

flask mode de production et de développement

J'ai développé une application avec flacon, et je souhaite la publier pour la production, mais je ne sais pas faire de séparation entre l'environnement de production et de développement (base de données et code), avez-vous des documents pour m'aider ou coder. Je précise dans le fichier config.py les deux environnements mais je ne sais pas comment faire avec.

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'
10

Pour ajouter à la réponse de Daniel:

Flask a une page dans sa documentation qui traite de ce problème.

Puisque vous avez spécifié votre configuration dans les classes, vous chargez votre configuration avec app.config.from_object('configmodule.ProductionConfig')

9
Nathan Wailes

Une convention utilisée consiste à spécifier une variable d'environnement avant de démarrer votre application.

Par exemple

$ ENV=prod; python run.py

Dans votre application, vous vérifiez la valeur de cette variable d'environnement pour déterminer la configuration à utiliser. Dans ton cas:

run.py

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

Il convient également de noter que la déclaration

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

affiche quel que soit ENV que vous définissez puisque l'interpréteur exécute tout le code dans les définitions de classe avant d'exécuter le reste du script.

23
Daniel Corin