Maison >développement back-end >Tutoriel Python >Pourquoi mon conteneur Docker détaché n'affiche-t-il pas la sortie d'impression Python ?

Pourquoi mon conteneur Docker détaché n'affiche-t-il pas la sortie d'impression Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-23 04:32:20901parcourir

Why Doesn't My Detached Docker Container Show Python Print Output?

Conteneurs Docker détachés et sortie d'impression dans les applications Python

Lors de l'exécution d'applications Python (2.7) dans un conteneur Docker détaché (à l'aide de l'indicateur -d), les utilisateurs peuvent rencontrer une situation dans laquelle les instructions d'impression de l'application ne produisent aucune sortie.

Comprendre la sortie Python Buffering

Python utilise la sortie mise en mémoire tampon par défaut, ce qui signifie qu'il stocke la sortie dans un tampon avant de l'envoyer à l'écran. Dans un conteneur détaché, ce tampon peut ne pas être vidé assez fréquemment, ce qui entraîne l'absence de sortie.

Utilisation d'une sortie sans tampon

Pour résoudre ce problème, une sortie sans tampon peut être utilisée avec l'option -u flag :

CMD ["python", "-u", "main.py"]

Cela garantit que la sortie est écrite immédiatement à l'écran, quelle que soit la mise en mémoire tampon paramètres.

Corrélation des journaux Docker

Avec une sortie sans tampon, les instructions d'impression seront visibles dans les journaux Docker :

docker logs myapp
> App started

Comportement du conteneur détaché sans "-u"

Lorsque l'indicateur -u n'est pas utilisé, l'impression se comporte comme suit dans un format détaché conteneur :

  • La sortie est stockée dans un tampon.
  • Si le tampon est plein, il est vidé à l'écran.
  • Si le conteneur se ferme avant le tampon est plein, la sortie est perdue.

Débogage Conseils

  • Utilisez l'indicateur python -u : Testez l'application avec une sortie sans tampon en dehors de Docker pour vous assurer que le problème est spécifique au conteneur.
  • Vérifiez docker logs : Même sans l'indicateur -u, la sortie devrait être visible dans les journaux Docker, bien que retardé.
  • Attacher au conteneur : L'attachement au conteneur avec docker attach peut afficher la sortie si le tampon est suffisamment petit pour être vidé avant le détachement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn