Maison > développement back-end > Tutoriel Python > Pourquoi mes applications Python Dockerisées n'affichent-elles aucune sortie lorsqu'elles sont exécutées de manière détachée ?

Pourquoi mes applications Python Dockerisées n'affichent-elles aucune sortie lorsqu'elles sont exécutées de manière détachée ?

Patricia Arquette
Libérer: 2024-11-29 12:36:10
original
876 Les gens l'ont consulté

Why Do My Dockerized Python Apps Show No Output When Run Detached?

Applications Python Dockerisées : pourquoi aucune sortie avec exécution détachée ?

Contexte

Lors de l'exécution de scripts Python dans des conteneurs Docker, le comportement de sortie peut différer selon que le conteneur est exécuté en mode interactif ou détaché mode.

Problème

En mode détaché (indicateur -d), les scripts Python peuvent n'imprimer aucune sortie, même si le conteneur semble fonctionner normalement. Ce problème affecte les applications Python (version 2.7) démarrées avec CMD ["python", "main.py"] dans leur Dockerfile.

Cause

Le problème vient de Comportement de sortie tampon par défaut de Python. Lors de l'exécution détachée, les tampons de sortie du conteneur ne sont pas vidés automatiquement, ils s'accumulent donc jusqu'à ce qu'un certain seuil soit atteint. Il en résulte une absence de sortie visible lors du détachement.

Solution

Pour résoudre ce problème, utilisez une sortie sans tampon (indicateur -u) :

CMD ["python", "-u", "main.py"]
Copier après la connexion

Cela force stdout et stderr à être sans tampon, permettant à la sortie d'être affichée immédiatement en mode détaché. conteneurs.

Explication

  • Sortie tamponnée : Par défaut, Python met en tampon stdout et stderr avant de les vider.
  • Mode détaché : En mode détaché, cette mise en mémoire tampon empêche la sortie immédiate, car le Le conteneur n'est pas activement surveillé pour la sortie.
  • Sortie sans tampon : L'indicateur -u désactive la mise en mémoire tampon, garantissant un affichage instantané de la sortie.

En activant la sortie sans tampon, le la sortie du conteneur peut être visualisée en temps réel pendant l'exécution détachée.

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 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