python3 flask 文件占用未释放问题

 更新时间:2023年11月07日 10:50:40   作者:太阳晒PP  
这篇文章主要介绍了python3 flask 文件占用未释放问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

背景

删除文件报错文件被进程占用

    starttime = datetime.datetime.now()
    files = os.listdir(os.getcwd())
    if 'scan.log' in files:
        os.remove(os.path.join(os.getcwd(), 'scan.log'))
    if 'scanResult.log' in files:
        os.remove(os.path.join(os.getcwd(), 'scanResult.log'))

原因

python logging模块打日志,句柄未释放导致,本地test.py调试不会出问题因为python执行完会退出

解决

在删除文件前,调logging.shutdown()

import logging
from logging.handlers import TimedRotatingFileHandler
formatter = logging.Formatter(
    fmt='[%(levelname)s] %(asctime)s  %(message)s',
    datefmt="%Y-%m-%d_%H:%M:%S"
)

def getLogger(name,logPath):
    logger = logging.getLogger(name)
    logger.setLevel(logging.INFO)
    if not logger.handlers:
        sh = logging.StreamHandler()
        sh.setLevel(logging.ERROR)
        fh = TimedRotatingFileHandler(logPath, when='midnight', backupCount=30, encoding='utf-8')
        fh.setFormatter(logging.INFO)
        sh.setFormatter(formatter)
        fh.setFormatter(formatter)
        logger.addHandler(sh)
        logger.addHandler(fh)

    return logger

def shutdown():
    logging.shutdown()

排错

怀疑自己写的with open没释放?按道理会自动释放,加了行f.close还是报错被占用

怀疑上传文件未及时释放,ftp.quit()、ftp.close()、还是不行

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

最新评论