为什么time.sleep()会导致Python中的syslog-ng崩溃

1 投票
1 回答
701 浏览
提问于 2025-04-17 11:12

我一直在尝试用 syslog-ng 记录脚本的输出,但是如果我在代码中使用了任何 time.sleep() 函数,就会导致 syslog-ng 出现问题,停止记录脚本的输出。

以下是具体情况。

// samplescript.py
import time

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

我使用管道将输出传递给 syslog-ng,并且使用了 unix 的 logger 工具,所以我这样调用脚本;

$ python sampleoutput.py | logger

这并没有在我的日志文件中生成任何输出。代码很简单,也能正常工作。

顺便说一下,我觉得 syslog-ng 的配置文件没有问题,因为如果我使用下面的代码,它就能按预期工作。

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

问: 为什么 time.sleep() 会导致 syslog-ng 出现问题?有没有什么可以替代 sleep() 函数的方式,我可以在我的代码中使用?

提前谢谢你。

1 个回答

4

你需要清空缓冲区中的标准输出流:

import sys
sys.stdout.flush()

如何清空Python打印的输出?

撰写回答