MacOS bash: Python выходной скрипт не всегда записывается во внешний файл - PullRequest
0 голосов
/ 12 апреля 2020

ОБНОВЛЕНИЕ: У меня есть сильная подсказка, это связано с некоторой проблемой буферизации. Если я использую команду

python -u ETL.py > data.log

, все работает нормально, когда я запускаю ее из Терминала. Тем не менее, я не понимаю причину проблемы, и когда я автоматизирую выполнение скрипта с помощью cron, файл data.log по-прежнему пуст.


У меня есть небольшой скрипт ETL Python, который извлекает данные из API и загружает их в базу данных. Сам скрипт отлично работает, но я хочу перенаправить его стандартный вывод в файл журнала, чтобы отслеживать, что происходит, когда я автоматизирую его выполнение.

Таким образом, я запускаю в Терминале:

python ETL.py > data.log

Вот странная часть: если я ограничу свой ETL всего несколькими десятками запросов API, все будет отлично, и я могу увидеть вывод сценария в файле data.log. Если я запускаю полный ETL с 1000 запросами API, файл data.log будет пустым.

Сценарий отлично работает в обоих случаях, если я просто запускаю

python ETL.py

Я вижу вывод моего кода непосредственно в терминале, и он отлично работает как для 10, так и для 1000 запросов API.

EDIT ( это было, вероятно, Непонятно из моего предыдущего описания ): вывод, который я пишу в файле журнала, не приходит из запросов API, это просто некоторая сводная информация, такая как:

745/750 успешных запросов

Список найденных функций: ...

Невозможно получить следующие данные: ...

и т. Д.

Do у вас есть идеи, почему это происходит, и как решить проблему?

Спасибо!

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