ОБНОВЛЕНИЕ: У меня есть сильная подсказка, это связано с некоторой проблемой буферизации. Если я использую команду
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 у вас есть идеи, почему это происходит, и как решить проблему?
Спасибо!