Журнал Kubernetes не показывает вывод python метод печати - PullRequest
0 голосов
/ 29 января 2020

У меня есть приложение python, в котором я использую метод print(), чтобы показывать текст пользователю. Когда я взаимодействую с этим приложением вручную с помощью команды kubectl exec ..., я вижу выходные данные отпечатков.

Однако, когда скрипт запускается автоматически при запуске контейнера с помощью CMD python3 /src/my_app.py (последняя запись в Dockerfile), печать исчезает (не отображается в kubectl logs). Айн подскажет как это исправить?

Ответы [ 2 ]

1 голос
/ 29 января 2020

Это потому, что потоки stdout и stderr буферизируются в Python.

. Вы можете установить переменную Environment равной PYTHONUNBUFFERED=1 или True

Также вы можете использовать Опция -u в вашем Dockerfile.

-u

Принудительно блокировать потоки stdout и stderr для буферизации. Эта опция не влияет на поток stdin.

Изменено в версии 3.7: Текстовый слой потоков stdout и stderr теперь не буферизован.

0 голосов
/ 29 января 2020

Оказалось, проблема среды python. Установка этих двух переменных окружения PYTHONUNBUFFERED=1 и PYTHONIOENCODING=UTF-8 устранила проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...