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函数运行,代码工作正常。
但是,如果我在芹菜/ supervisord中使用它: fn.delay( “loggingFile”) 该文件已打开且从未关闭(由supervisord中使用的用户)。当然,经过一段时间后,我有数百个打开的文件非常糟糕并导致其他麻烦。为什么只有celery任务发生这种情况以及如何避免它?
我知道通过使用lsof监视系统来查看哪些用户正在打开哪些文件,文件永远不会关闭。
感谢任何帮助
答案 0 :(得分:0)
由于某种原因,守护程序不会关闭文件处理程序。完成日志记录后,您需要手动使用它:
logger.removeHandler(handler)