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
Libérer: 2024-11-23 04:32:20
original
899 Les gens l'ont consulté

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"]
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal