python - 使用 RotatingFileHandler 从多个进程记录
问题描述
我正在使用多处理模块将许多 I/O 作业拆分到不同的进程中,我遇到了从不同进程记录到同一个日志文件的问题。在寻找解决方案后,我将记录器中的文件集从普通 FileHandler 更改为 RotatingFileHandler。在我的实验中(在开发环境中),它完美地工作并解决了问题,但我不确定它是否是一种可靠的方法。有什么缺点吗?我应该注意什么?
解决方案
不,不支持。从 python日志记录食谱:
虽然日志记录是线程安全的,并且支持在单个进程中从多个线程记录到单个文件,但不支持从多个进程记录到单个文件,因为没有标准方法可以跨多个进程序列化对单个文件的访问Python 中的进程。
之后,食谱建议使用单个套接字服务器进程来处理日志和向其发送日志消息的其他进程。在通过网络发送和接收日志事件部分中有一个这种方法的工作示例。
您可以制作一个 api 来接收您的日志并保存在文件中。或者你可以使用一个队列来存储你的日志所有线程都将disered日志放入这个队列中,一个读取其队列的单独进程将其写入文件。
推荐阅读
- graphql - graphql-yoga - GraphQL 解析器参数在哪里定义和记录?
- python - 使用Python将没有规则的列表转换为基于字母的常规列表
- python - 如何在 Python 3 中将“0b11001100”读取为一个字节块而不是字符串?
- cloudinary - 存储对云资产的引用的方法
- c# - 按索引在字符串中查找单词
- c# - 如何找到没有文件类型的文件?
- android - 我只想选择一个单选按钮,即不允许多选
- c - 是什么在 C 中的这段代码中生成“frec[v1[i]]++”
- pyspark - H2O 外部后端上的帧上传/创建从 python/pyspark 挂起
- c - GNU readline:巨大的内存泄漏