Как обновить stdout.txt во время выполнения задачи (в режиме реального времени)? - PullRequest
0 голосов
/ 27 июня 2019

Я использую пакет Azure для выполнения процесса, который имеет разные шаги, процесс запрограммирован в Python.Я хочу вести журнал шагов, в которых находится мой процесс, в файле stdout.txt в пакете Azure.

Пока что я печатаю шаг, в котором я нахожусь. С этим, когда пакетное задание завершено, отпечатки появятся в stdout.txt.Однако я не смог найти способ обновить файл stdout.txt в режиме реального времени.

Например, представьте, что у меня есть следующий фрагмент кода:

print('Step 1')
# Step 1 code 
print('Step 2')
# Step 2 code 
print('Step 3')
# Step 3 code 

Однажды вся моя задачавыполняется, stdout.txt будет выглядеть так:

Шаг 1

Шаг 2

Шаг 3

Однако,во время процесса, если я попытаюсь получить доступ к файлу, он будет пустым.

Мне интересно, есть ли способ получить эти отпечатки в реальном времени, не нужно ждать, пока задача будет завершена, чтобызаписать что-то, то есть, пока задача находится на шаге 1, единственная строка в моем stdout.txt будет выглядеть так:

Шаг 1

И файлбудет обновляться при запуске нового шага (и, следовательно, печати).Любая идея или намек?

1 Ответ

2 голосов
/ 27 июня 2019

Скорее всего, это побочный эффект от буферизации вашей программы.Если вам нужно немедленно увидеть данные в потоке stdout, вам, вероятно, потребуется сбросить их.Вы можете попытаться сбросить стандартный вывод в Python или запустить Python в небуферизованном режиме .

...