跳转到主要内容

多进程应用日志记录器

项目描述

multiprocessing-logging

Supported Python versions License

在使用multiprocessing模块时,由于子进程应将日志记录到单独的文件/流,或者有记录变得混乱的风险,日志记录变得不太有用。

此简单模块实现了一个Handler,当设置在根Logger上时,将处理隧道记录到主进程,以便正确处理。

目前已在Linux和Python 2.7 & 3.6+上进行了测试。

Pypy3在测试中挂起,因此我不建议使用它。

最近Pypy似乎可以正常工作。

仅在POSIX系统上工作,并且仅支持Linux。它不适用于Windows。

起源

此库直接从StackOverflow帖子中提取出来,并将其转换为模块,这样我就不必在每个项目中复制代码。

后来,贡献了几个改进。

用法

在您开始记录日志但配置日志框架之后(也许使用logging.basicConfig(...)),执行以下操作

import multiprocessing_logging

multiprocessing_logging.install_mp_handler()

这样就完成了。

使用 multiprocessing.Pool

在使用 Pool 时,请确保在实例化 Pool 之前调用 install_mp_handler,例如

import logging
from multiprocessing import Pool
from multiprocessing_logging import install_mp_handler

logging.basicConfig(...)
install_mp_handler()
pool = Pool(...)

问题

该模块的方法依赖于使用 fork 来创建新进程。这种方法 当同时使用线程时基本上是不安全的,就像本模块所做的那样。

结果是,在创建新进程时,应用程序挂起的情况可能性很低。

作为补救措施,不要持续创建新进程。相反,创建一个 Pool 并重复使用它。

项目详情


下载文件

下载适合您平台文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。

源代码分发

此版本没有提供源代码分发文件。请参阅 生成分发存档的教程

构建分发

multiprocessing_logging-0.3.4-py2.py3-none-any.whl (8.8 kB 查看哈希值)

上传日期 Python 2 Python 3

由以下提供支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面