Как отследить «падение» скрипта?
Вообще при работе с демонами делается следующая схема.
1. Любой демон при старте записывает свой PID в какой-нибудь файл и работает.
2. По крону, допустим каждые 5 секунд, запускается менеджер, который считывает файл(ы) с записанным PID и проверяет жив ли процесс. Если процесс жив, то менеджер завершает свою работу. Если процесс умер, то он поднимает демона, и завершает свою работу.
. По логу видно, что срабатывает блок else. После него скрипт останавливается
Ну так у тебя в else стоит break который заставляет выйти из цикла, всё правильно. Если падает дальше, поставь там try catch с записью в лог, либо просто записывай куда-то вывод программы (python3 main.py &> file.log или используя supervisor например)