Вангую, что в бесконечном цикле вылетает Exception - скорее всего где-то в requests (Сервер не ответил или еще что-то)
Пропишите в rc.local /path/to/yourscript >/tmp/script.out 2>&1
И потом смотрите /tmp/script.out на наличие ошибок.
Самое главное - глазами увидеть сообщение об ошибке - а не просто "скрипт отваливается"
Суть в том, что если проблема в скрипте, то выдаст ошибку в stderr и помрет. Так как у вас несколько мест в программе обернуто в try...except без указания Exception (гуглите почему так делать плохо) - то скрипт не помирает а продолжает выполняться (при этом возможно уже все пошло вкривь и вкось и ничего нормально не выполняется, скрипт работает но неверно)
Конкретно, меня смущает эта часть:
try:
request = requests.post(URL + TOKEN + '/getUpdates', data=data) # Отправка запроса обновлений
except:
log_event('Error getting updates') # Логгируем ошибку
return False # Завершаем проверку
Здесь мы видим что при возникновении любого исключения, выполняется log_event(...)
Смотрим туда, и видим многообещающее ToDo:
def log_event(text):
"""
Процедура логгирования
ToDo: 1) Запись лога в файл
"""
event = '%s >> %s' % (time.ctime(), text)
print event
То есть некое сообщение будет записано в stdout, и о том какое конкретно исключение произошло можно догадываться только косвенно.
Вообще, надо сначала разобраться почему скрипт ничего не пишет в telegram.out и telegram.err - пустым, по крайней мере telegram.out быть не может
попробуйте такой скрипт:
#!/usr/bin/python
print "hello world"
print("hello world')
запустить точно так же:
/usr/bin/python /home/pi/script.py >> /home/pi/script.out 2>> /home/pi/script.err
Это перенаправление вывода, то есть то что в обычном режиме вы должны увидеть в косоли, должно появиться в этих файлах. Начните с этого.