@del4pp

Программа сама отключается без ошибок, как заставить работать вечно?

Здравствуйте.
Есть программа, работает корректно, 3-4 часа на сервере (запускаю через python3 main.py & exit), после этого отключается без сообщений об ошибках.

код программы выставлять не буду, т.к там очень много.
Если запустить на сервере без & exit, и смотреть в консоле отладки (принтами) - работает как надо, а если в фоне запустить - краш.

if __name__ == "__main__":
    while True:
        try:
            main()
        except Exception as e:
            logging_time_update.add_time_update(e)
            time.sleep(5)


logging_time_update.add_time_update(e) - принимает текстовое значение, и добавляет в базу данных время, и текст который передаю в функцию.
Все остальное работает в таком же обработчике в функции мейн.
Когда программа перестает работать - в базе данных отображается только последенее время запуска, без информации об ошибке.
  • Вопрос задан
  • 724 просмотра
Решения вопроса 2
shurshur
@shurshur
Сисадмин, просто сисадмин...
python3 main.py & disown & exit

А ещё лучше логгировать что она пишет:

python3 main.py > main.log 2>&1 & disown & exit
Ответ написан
Комментировать
@AlexPyth
Разработчик ПО
Когда я запускал свои скрипты на сервере в фоне без нормального логгирования, тоже сталкивался с похожей проблемой, хотя код выглядел совершенно правильно... Проблема была в переполнении стека из-за многочисленных рекурсий. Если вы используете их, то посмотрите, как можно избавиться от этого.
И, лучше, логгировать все свои программы)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы