Le journal Python n'est pas sorti avec docker-compose up

Conclusion

Résolu avec l'option -u

docker-compose.yml


command: python -u main.py

Contexte

Lorsque j'ai spécifié le fichier suivant dans command de docker-compose.yml, rien n'était sorti dans le journal. [^ 1]

[^ 1]: Il m'a fallu beaucoup de temps pour remarquer que c'était "pas sorti" au lieu de "ne fonctionne pas"

import time

print('hoge')

while True:
  print('fuga')
  time.sleep(1)

Nous l'isolerons partiellement pour en rechercher la cause.

[^ 2]: Parfois, il était affiché lorsque j'ai supprimé l'instruction ʻimport`, mais cela a juste cessé de fonctionner sur cette ligne en raison d'une erreur.

Finalement, j'ai commenté le script python ligne par ligne et j'ai finalement trouvé que ce qui suit while True: semble être le problème. [^ 2]

Sortie standard et mise en mémoire tampon

La sortie standard de print () etc. de Python n'est pas sortie immédiatement mais est mise en mémoire tampon et sortie en fonction du timing.

Cela signifiait que le résultat n'était pas passé au docker-compose qui recevait la sortie car while True: n'a jamais terminé l'exécution et le tampon ne s'est jamais rempli.

python a une option -u pour désactiver la mise en mémoire tampon, que j'ai résolue en la spécifiant.

référence: Comment arrêter la mise en mémoire tampon de bloc de la sortie standard dans Python 3-Qiita Comportement mystérieux de la commande head et mise en mémoire tampon de l'entrée / sortie standard --CUBE SUGAR CONTAINER

Recommended Posts

Le journal Python n'est pas sorti avec docker-compose up
Sortie du journal de test unitaire avec python
Sortie du journal Python vers la console avec GAE
environnement python avec docker-compose
Journal de sortie au format JSON avec journalisation standard Python
Le rond de Python n'est pas strictement rond
Essayez la sortie Python avec Haxe 3.2
La liste Python n'est pas une liste
[Python] Qu'est-ce qu'une instruction with?
Créer Apache Log CSV avec Python
Sortie vers un fichier csv avec Python
Entrée / sortie avec Python (mémo d'apprentissage Python ⑤)
[Note] Sortie Hello world avec python
Accélérez grossièrement Python avec numba
[python3] Implémentez facilement la fonction de sortie du journal de débogage avec journalisation et cliquez sur
python Remarque: lorsque easy_install ne peut pas être utilisé
[Python] Erreur de nom: le nom'urlparse 'n'est pas défini
Avec PEP8 et PEP257, un codage Python qui n'est pas gênant à montrer aux gens!
Sortir les caractères de couleur en joli avec python
[Python] Arrondissez avec juste l'opérateur
Sortie du journal python
UnicodeEncodeError lutte avec la sortie standard de python3
Lorsque le journal acquis par rsyslog n'est pas mis à jour après la rotation avec logrotate
Sortie CSV de la recherche Google avec [Python]! 【Facile】
La requête [Développement Web avec Python] est également redirigée
J'ai essayé de sortir LLVM IR avec Python
Connectez-vous à Yahoo Business avec Selenium Python
Que comparez-vous avec Python et ==?
[Python] Expression (1,2) ne fait pas de taple avec des parenthèses
[CentOS8] Comment afficher la sortie Python standard dans le journal systemd
FizzBuzz en Python3
Grattage avec Python
Python est facile
Grattage avec Python
Python avec Go
sortie d'apprentissage python
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Qu'est-ce que python
Bingo avec python
Zundokokiyoshi avec python
Python est une instance
Il est facile d'exécuter SQL avec Python et de générer le résultat dans Excel
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Qu'est-ce que Python
Procédure pour charger MNIST avec python et sortie en png
Python> assert not np.isnan (loss_value), 'Model diverged with loss = NaN'
Notez qu'écrire comme ça avec ruby c'est écrire comme ça avec python
Pourquoi ne pas créer facilement une table élégante avec Python?
Obtenez une sortie standard en temps réel avec le sous-processus Python