Résolu avec l'option -u
docker-compose.yml
command: python -u main.py
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.
docker-compose run
docker-compose run python bash
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]
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