当前位置: 首页 > article >正文

fastapi sqlalchemy 日志 logging 写入异常 多进程文件写入异常

报错

--- Logging error ---
Traceback (most recent call last):
  File "C:\ProgramData\miniconda3\Lib\logging\handlers.py", line 74, in emit
    self.doRollover()
  File "C:\ProgramData\miniconda3\Lib\logging\handlers.py", line 179, in doRollover
    self.rotate(self.baseFilename, dfn)
  File "C:\ProgramData\miniconda3\Lib\logging\handlers.py", line 115, in rotate
    os.rename(source, dest)
PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。

资料

关于python多进程日志输出问题的解决方案_python 多进程日志写入-CSDN博客

1.nb_log 简介 — nb_log v0.1 文档(太长)

Python入门之logging日志模块以及多进程日志-腾讯云开发者社区-腾讯云(快速)

python Flask logging日志报错“另一个程序正在使用此文件,进程无法访问”_python flask 另一个程序正在使用此文件-CSDN博客

logging多进程报错:PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问_python logging error 多进程 permissionerror: [winerro-CSDN博客

logging模块多进程问题及解决方案_python logging多进程无法滚动-CSDN博客

背景

  fastapi项目 开发过程中,将 sqlalchemy 的sql语句等信息写入到日志文件中,采用 日志轮转 的方式进行日志文件切割,触发异常:

PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。

多个进程同时对同一个文件进行写操作时(一进程写日志内容,一个进程修改日志文件名),导致loggingError(就像我们打开一个word文件后,如果不关闭这个文件就没有办法去修改这个文件的文件名一样)(应当注意,logging 可以同时进行多个写操作,线程安全的,内容写满后,进行日志切割(重命名)才会引发这个错误)

解决

保证对同一个文件的重命名操作和写入内容操作不是同时进行的:

1.修改源码;

2.所有日志写入一个队列,对队列统一处理;

3.引入三方包;


http://www.kler.cn/a/554396.html

相关文章:

  • 一文讲解Redis为什么读写性能高以及I/O复用相关知识点
  • 【Python爬虫(28)】爬虫时代,数据安全的坚盾与隐私保护的密锁
  • 电磁铁的磁芯材质
  • Thor: 统一AI模型网关的革新之选
  • 车载音频配置(二)
  • 本地部署DeepSeek大模型
  • 在前端如何把SEO优化做到极致?
  • angular中使用animation.css实现翻转展示卡片正反两面效果
  • centos下使用pyenv管理python版本
  • 基于SpringBoot的乐享田园系统【附源码】
  • D. C05.L08.贪心算法入门(一).课堂练习4.危险的实验(NHOI2015初中)
  • 从零开始用STM32驱动DRV8301:无人机/机器人电机控制指南
  • minio作为K8S后端存储
  • Android看门狗(WatchDog)
  • 缺少网络安全组织架构 网络安全缺陷
  • 前端面试场景题 1 (批量处理toast、减少if-else)
  • 保姆级! 本地部署DeepSeek-R1大模型 安装Ollama Api 后,Postman本地调用 deepseek
  • Python C API 深度解析与实战指南
  • 备战蓝桥杯 -牛客
  • 速度分析是怎么做的?叠加速度是波传播速度吗?