Nohup e Python -u: ainda não registra dados em tempo real

Ao iniciar um processo Python, em segundo plano, com

nohup python myscript.py > test.log 2>&1 < /dev/null &

o problema é questdout é armazenado em buffer: os dados sãonão escrito em tempo real paratest.log. A solução comum paraeste problema élavar periodicamente comsys.stdout.flush(), ou melhor ainda, como sugeridopor esta resposta, usarpython -u :

nohup python -u myscript.py > test.log 2>&1 < /dev/null &

Mas isto não é o suficiente. Notei que funcionou durante algumas horas e depois parou de funcionar,ou seja, depois de algumas horastest.log não é mais escrito em tempo real, mesmo que eu useinohup python -u ....

1)É assim que se reproduz o problema (Eu tenho um Debian Jessie padrão). Inicie este arquivo:

import time
import datetime
while True:
    print datetime.datetime.now()
    time.sleep(60)

comnohup python -u myscript.py > test.log 2>&1 < /dev/null &. O arquivo de log será atualizado por algumas horas e depois de 3 ou 4 horas,nada não mais.

2)Como resolver este problema, sem precisar inserirstdout.flush() a cada 2 linhas no código (solução feia)?

questionAnswers(2)

yourAnswerToTheQuestion