Добрый день.
Написан небольшой скрипт, который периодически парсит web-страничку. "Демонизирован" этот скрипт с помощью такого класса:
Источник.
Сам скрипт работает корректно, но он иногда "падает". Причем может проработать стабильно два месяца и "упасть", а может неделю.
С помощью библиотеки
logging скрипт пишет свой лог. По нему определил, что падение происходит после такого кода:
while True:
try:
grab.go(url)
except Exception as error:
logging.error("Ошибка при получении обновленной страницы: %s", error)
time.sleep(30)
else:
logging.info("Вывод списка: %s", g.doc.select('//pre')[0].text())
break
Думал, что проблема с получением обновленной страницы, но она получается корректно. По логу видно, что срабатывает блок
else. После него скрипт останавливается. После этого блока идет еще одна запись в лог, но она не записывается.
Работает это все на
CentOS 6.7 (Final). Написан скрипт на
python3, версия python
3.4.3, используется библиотека
Grab.
Подскажите, как отследить из-за чего "падает" скрипт? Может у самого python'а есть какой-то общий лог, либо в самой системе где-то это можно отследить?