web-dev-qa-db-fra.com

Existe-t-il un moyen de consigner python imprimer les instructions en gunicorn?

Avec mon Procfile comme ceci:

web: gunicorn app:app \
    --bind "$Host:$PORT" \
    --debug --error-logfile "-" \
    --enable-stdio-inheritance \
    --reload \
    --log-level "debug" 

est-il possible d'obtenir les instructions python print à enregistrer dans stdout/bash? J'utilise également le framework bottle ici, si cela affecte quoi que ce soit.

28
kontur

Il s'avère que les instructions print passaient réellement, mais avec retard.

La note gunicorn docs for --enable-stdio-inheritance pour définir le PYTHONUNBUFFERED, que je pensais avoir, mais cela semble avec une syntaxe incorrecte.

Je l'ai résolu en utilisant un .env fichier avec mon foreman configuration pour définir la variable comme ceci:

PYTHONUNBUFFERED=TRUE
18
kontur

Dans python 3, en ajoutant flush=True dans chaque déclaration d'impression fonctionne pour mon application flacon/gunicorn.

Par exemple.

gunicorn --bind 0.0.0.0:8080 server --log-level debug

Aucun indicateur particulier n'est requis.

Voyez si cela aide.

10
jsnceo

Veuillez essayer la commande ci-dessous:

gunicorn --workers 3 --bind 127.0.0.1:5000 --error-logfile /var/log/gunicorn/error.log --access-logfile /var/log/gunicorn/access.log --capture-output --log-level debug

Cela a fonctionné pour moi.

Veuillez préciser log-level à debug (par défaut info) http://docs.gunicorn.org/en/stable/settings.html#loglevel ,

Spécifiez également capture-output flag (par défaut false) http://docs.gunicorn.org/en/stable/settings.html#capture-output .

Vous devriez pouvoir regarder les journaux dans le fichier journal des erreurs.

6
Satys