Задать вопрос
  • Проблема с Python- скриптом?

    svfat
    @svfat
    ☺Нужен VPS? Два месяца бесплатно. Смотри профиль☺
    Вангую, что в бесконечном цикле вылетает 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
    Это перенаправление вывода, то есть то что в обычном режиме вы должны увидеть в косоли, должно появиться в этих файлах. Начните с этого.
    Ответ написан