python3 flask 文件占用未释放问题
作者:太阳晒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()、还是不行
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。