【发布时间】:2015-12-03 23:00:38
【问题描述】:
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 监视系统以查看哪些用户正在打开哪些文件,我知道文件永远不会关闭。
感谢任何帮助
【问题讨论】:
标签: python linux python-2.7 celery supervisord