Cron завершает Python-скрипт? - PullRequest
4 голосов
/ 20 декабря 2010

У меня есть «длинный» скрипт на python, выполнение которого занимает около 45 [мин].Я использую другой (сценарий «планировщик») сценарий Python для запуска этого длинного сценария.Когда я запускаю сценарий «планировщик» с помощью терминала, все работает отлично (имеется в виду, что «длинный» сценарий запускается без проблем).

У меня были некоторые проблемы, но в итоге удалось добавить сценарий «планировщика» вбегать через cron каждую минуту.так что теперь он «запускает» другой скрипт и работает нормально.

Вот проблема: всякий раз, когда скрипт (который «запускается» планировщиком)) имеет строку, которая говорит:

print "hello"

или любой оператор print, задание cron запускается, но завершается через 20-30 секунд.Когда я удаляю все операторы «print», cron запускает задания в обычном режиме и не завершает свою работу.

Я бы хотел исправить эту ситуацию, и чтобы скрипты продолжали выполняться, даже если у них есть некоторые операторы «print»в них.какие-нибудь советы, как это сделать?

PS из «планировщика», я использую

subprocess.Popen([sys.executable, command])

, чтобы «запустить» все остальные скрипты Python.

1 Ответ

6 голосов
/ 20 декабря 2010

У меня есть догадка, что это связано с тем, как cron обрабатывает стандартный вывод.Как вы перенаправляете вывод?

С http://aplawrence.com/BDD/bbcronbasics.html:

ВЫХОД

Обычно выходные данные любой программы отправляются на STDOUT (стандартный выход) и обычно заводятсяна чьем-то экране.Для заданий, запускаемых cron, STDOUT будет направляться в локальную почтовую подсистему, что означает, что любой вывод, сгенерированный заданием cron, будет отправлен пользователю, владеющему заданием.Если это нежелательно, вы должны предпринять шаги, чтобы перенаправить вывод вашего задания cron в файл.Также предлагается перенаправить STDERR (стандартная ошибка) в файл, чтобы иметь возможность анализировать любые аномалии при выполнении задания cron.

...