Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Bekas Docker Python Terpisah Saya Tidak Menunjukkan Output Cetakan?

Mengapa Bekas Docker Python Terpisah Saya Tidak Menunjukkan Output Cetakan?

DDD
Lepaskan: 2024-12-06 20:30:16
asal
660 orang telah melayarinya

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

Memahami Gelagat Cetakan dalam Bekas Python Docker Terpisah

Dalam aplikasi Python yang dijalankan dalam bekas Docker yang terpisah, anda mungkin menghadapi kekurangan output apabila menggunakan pernyataan cetakan. Isu ini timbul apabila strim STDOUT dan STDERR ditimbal dalam bekas.

Masalahnya

Apabila anda melaksanakan apl Python (2.7) menggunakan CMD Docker ["python","main.py "], skrip main.py dimulakan dengan cetakan "Apl dimulakan" dan memasuki gelung tidak tentu. Memerhati bekas dengan bendera -it menunjukkan output yang dijangkakan dalam kedua-dua terminal dan log Docker.

Walau bagaimanapun, menggunakan bendera -d (mod tertanggal) melancarkan bekas tetapi menyekat output yang dijangka daripada kelihatan dalam log atau terminal.

Penyelesaian

Untuk menyelesaikan tingkah laku ini, pilihan output tanpa buffer Python boleh digunakan. Dengan mengubah suai CMD Fail Docker kepada CMD ["python","-u","main.py"], penimbalan STDOUT dan STDERR dilumpuhkan. Ini membolehkan Python mencetak serta-merta, menjadikan output kelihatan apabila menanyakan docker logs myapp.

Mengapa Output Tidak Dibuffer?

Argumen -u memaksa Python untuk mengalirkan output ke aliran standard tanpa menunggu penimbal untuk diisi. Ini memastikan cetakan dipaparkan dengan segera, walaupun semasa skrip berjalan di latar belakang.

Pemerhatian Tambahan

Berbeza dengan mencetak, menggunakan fungsi logging.warning("teks") modul pengelogan menjana keluaran serta-merta walaupun tanpa mod unbuffered. Ini kerana pengelogan mengendalikan pembilasan secara dalaman.

Dokumentasi Python untuk pilihan -u menyatakan bahawa ia menyahbuffer kedua-dua strim STDOUT dan STDERR, membenarkan paparan output langsung dalam bekas yang terpisah.

Atas ialah kandungan terperinci Mengapa Bekas Docker Python Terpisah Saya Tidak Menunjukkan Output Cetakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan