Почему python не сразу пишет в файл?

Есть скрипт
import serial
import datetime

ser = serial.Serial("/dev/ttyUSB0", 9600)
log = open('/opt/share/www/'+datetime.datetime.now().strftime("%Y.%m.%d")+'.txt','a+')
while 1:
print >> log , datetime.datetime.now().strftime("%y %m %d %H %M %S ") , ser.readline(),


который фиксирует время когда поступают данные с устройства в компьютер и собственно сами данные. В 00:00 крон делает килл скрипта и рестарт для записи данных в новый файл. В файле за предыдущие сутки отсутствуют данные за последние 5-10 мин. Как устранить этот недочет?
  • Вопрос задан
  • 2428 просмотров
Решения вопроса 1
@GadZini
А еще в open можно добавить третий параметр 0 для записи без буфера
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Дело скорее всего в буффере. Как вариант можно с помощью signal перехватить SIGTERM, и перед завершением закрыть файл.
import signal

def sigterm_handler(signal, stack_frame):
    log.close()
    exit(0)

signal.signal(signal.SIGTERM, sigterm_handler)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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