2014-09-09 2 views
1

В Python я часто использую блоки try-except, кроме определенных условий. Однако непредвиденные ошибки потенциально могут быть подняты, и я не могу объяснить их всех. Как я могу перезапустить программу Python, когда она перестает работать внутри такой среды, как Linux?Как перезапустить программу после ошибки заставляет ее остановиться?

ответ

1

Вы можете поймать BaseException класс , Это основной класс для всех ошибок, поэтому вы будете обрабатывать их все.

Если вы хотите, чтобы программа работала, когда smth действительно неприятно, например, утечка памяти или ошибка сегментации, вы должны написать сторожевой таймер. Watchdog - это программа, которая проверяет процесс с указанным запуском pid, а если нет, перезагружает его.

0

Как насчет оборачивать код питона в бесконечность во время цикла в оболочке:

$ while : 
do 
python -c '1 + []' 
done 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
TypeError: unsupported operand type(s) for +: 'int' and 'list' 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
TypeError: unsupported operand type(s) for +: 'int' and 'list' 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
TypeError: unsupported operand type(s) for +: 'int' and 'list' 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
TypeError: unsupported operand type(s) for +: 'int' and 'list' 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
TypeError: unsupported operand type(s) for +: 'int' and 'list' 

Вы можете легко сделать то же самое для питона сценария:

$ while : 
do 
python mycode.py 
done 
Смежные вопросы