web-dev-qa-db-fra.com

Comment exécuter une application flask en gunicorn si j'utilise le modèle d'usine d'application?

J'ai écrit une application flask en utilisant le modèle de fabrique d'application. Cela signifie qu'il ne crée pas automatiquement une instance d'application lorsque vous l'importez. Vous devez appeler create_app pour cela. Maintenant, comment puis-je l'exécuter en gunicorn?

43
Nick Retallack

Créez un fichier wsgi.py Sous votre projet avec le contenu suivant, puis pointez Gunicorn dessus.

from my_project import create_app

app = create_app()
gunicorn -w 4 my_project.wsgi:app
# -w 4 specifies four worker processes

Gunicorn permet de spécifier un appel de fonction comme my_project:create_app(). Dans la plupart des cas, vous pouvez ignorer la création d'un fichier wsgi.py Et indiquer à Gunicorn comment créer votre application directement.

gunicorn -w 4 my_project:create_app()

Notez que vous devrez peut-être mettre le nom entre guillemets pour certains shells.

gunicorn -w 4 "my_project:create_app()"
66
davidism

Vous devez créer create_app () avec une configuration d'usine spécifique dans wsgi.py, tout comme manage.py ou runserver.py. Voir le code ci-dessous:

from your_app import create_app

app = create_app(os.getenv('FLASK_CONFIG') or 'dev')

if __== "__main__":
    app.run()

Et puis, vous pouvez exécuter la commande gunicorn -w 4 -b 0.0.0.0:5000 wsgi:app pour exécuter votre application.

4
sudoz