0

从这个 python 脚本:

import logging

print('normal print')
logging.error('logger test error')

如果我从命令行运行这个脚本,我会得到:

$ python3 ./test.py
normal print
ERROR:root:logger test error

现在,如果我使用以下相同的脚本设置 cron 作业:

25 10 * * * python3 ~/test.py

我收到以下电子邮件:

...
Content-Type: text/plain; charset=UTF-8
...
Date: Fri,  8 Oct 2021 10:25:01 +0200 (CEST)

ERROR:root:logger test error
normal print

我们看到输出是相反的。这里发生了什么事 ?

4

1 回答 1

0

我在https://unix.stackexchange.com/questions/182537/write-python-stdout-to-file-immediately找到了符合条件的答案

基本上,我认为 cron 会将命令输出重定向到某处以生成电子邮件,并且正在发生缓冲——控制台输出并非如此。在这里,print() 的输出被缓冲(例如,未刷新)。但是,logging 每次调用后都会刷新流。

于 2021-10-08T10:05:28.457 回答