gpt4 book ai didi

python - 为什么在 celery 任务后不关闭日志文件

转载 作者:太空宇宙 更新时间:2023-11-04 13:00:21 27 4
gpt4 key购买 nike

def fn(filename):
import logging
logger = logging.getLogger(filename)
formatter = logging.Formatter('[%(asctime)s:%(msecs)d], [%(levelname)s], %(message)s, ')
handler = logging.FileHandler(filename + ".log")
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.error("that's an error")

基本上我只是使用 python 日志库进行日志记录。如果我将代码作为普通的 python 函数运行,代码工作正常。

但是如果我在 celery/supervisord 中使用它: fn.delay("记录文件")该文件被打开并且永远不会关闭(由 supervisord 中使用的用户)。当然,一段时间后,我打开了数百个文件,这非常糟糕并且会引起其他麻烦。为什么仅 celery 任务会发生这种情况以及如何避免这种情况?

通过使用 lsof 监视系统以查看哪些用户正在打开哪些文件,我知道这些文件永远不会关闭。

感谢任何帮助

最佳答案

出于某种原因,守护进程不会关闭文件处理程序。完成记录后,您将需要手动使用它:

logger.removeHandler(handler)

关于python - 为什么在 celery 任务后不关闭日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34077879/

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