Почему time.sleep () ломает syslog-ng в Python - PullRequest
1 голос
/ 27 января 2012

Я пытался записать вывод сценария с помощью syslog-ng , однако, если я использую любую функцию time.sleep () в моем коде, она прерывает syslog-ng и прекращает регистрировать выводсценарий.

Вот подробности.

// samplescript.py
import time

while True:
    print "hello world"
    time.sleep(5)

Я использую pipe, чтобы получить его вывод в syslog-ng, и использую инструмент unix logger , поэтому я вызываю скрипт следующим образом;

$ python sampleoutput.py | logger

Это не создает никакого вывода в мой файл журнала.Код прост и работает.

Кстати, я ничего плохого не делаю с файлом syslog-ng conf, поскольку, если я использую приведенный ниже код, он работает как положено.

// samplescript.py    
while True:
    print "hello world"

Q: почему time.sleep () ломает syslog-ng?Есть ли эквивалентность функции sleep (), которую я мог бы использовать в своем коде?

заранее спасибо.

1 Ответ

4 голосов
/ 27 января 2012

Вам необходимо очистить буферизованный поток stdout:

import sys
sys.stdout.flush()

Как очистить вывод печати Python?

...