gpt4 book ai didi

Python 日志记录模块输出到屏幕滞后

转载 作者:太空宇宙 更新时间:2023-11-04 03:53:10 25 4
gpt4 key购买 nike

在我的 python 脚本中,我使用日志记录模块将 INFO 转到文件和屏幕:

fh_info = logging.FileHandler(info)
fh_info.setLevel(logging.INFO)
fh_info.setFormatter(formatter)

std_out_info = logging.StreamHandler()
std_out_info.setLevel(logging.INFO)

logger.addHandler(fh_info)
logger.addHandler(std_out_info)

但我遇到的问题是消息在函数完成后到达屏幕。例如,在:

def getToken(self):
msg = ("Initializing token....")
logger.info(msg)
sys.stdout.flush()
try:
jsonreq = ( {"auth": {"KEY:apiKeyCredentials": {
"username": self.username,
"apiKey": self.apikey}}})
auth_headers = {'content-type': 'application/json'}
r = requests.post(self.url, data=json.dumps(jsonreq), headers=auth_headers)
self.jsonresp = json.loads(r.text)
self.token = str(self.jsonresp['access']['token']['id'])
msg = ("done!")
logger.info(msg)
except:
msg = ("Bad name or apikey!")
logger.error(msg)
sys.exit()

函数中的操作完成后,屏幕上会出现“Initializing token....”消息。在身份验证过程中没有任何输出的情况下会出现长时间的停顿……然后在身份验证完成后,我会看到“正在初始化 token ……已完成”。

如何使 logger.info(msg) 与脚本流保持同步并及时输出到屏幕?

最佳答案

您没有使用 sys.stdout 初始化 StreamHandler,因此它将使用记录的默认值 - sys.stderr。这就是为什么您刷新 sys.stdout 没有任何效果 - 您发布的代码没有任何内容导致写入 sys.stdout!

关于Python 日志记录模块输出到屏幕滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20199557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com