是什么导致这些使用Python多处理的不一致日志?

时间:2018-09-26 21:27:37

标签: python python-3.x asynchronous logging python-multiprocessing

我正在创建一个模块,用于使用Python的多处理程序生成进程。模块的一部分专注于创建工作进程并将结果从这些进程返回到结果队列。使用TCP SocketHandler和StreamHandler完成模块的日志记录。

问题是日志记录有时有效,但并非始终有效。实际的多进程模块按预期工作,但是在日志记录控制台中不一致显示输出日志。有时会显示所有或大多数日志。但是,日志可能会定期或最终消失,直到仅显示部分日志为止。此外,按预期运行单独的模块日志,显示所有日志。

代表我当前测试的代码段如下:

service

预期的日志输出与意外的输出如下:

理想输出:

  

检查死进程或孤立进程。

     

进程1无响应;终止过程。

     

创建的过程;进程名称为Process-2

     

进程2已启动。

     

运行过程Process-2;等待结果。

     

目标方法,存储结果和完成过程的名称。

     

总和是:5

     

流程2完成,正在退出。

意外输出

  

检查死进程或孤立进程。

     

创建的过程;进程名称为Process-2

     

运行过程Process-2;等待结果。

     

总和是:5

或更糟的是:

  

总和是:5

通过上述操作,我已经在记录器上完成了基本配置(即:设置日志级别),并且将记录服务器配置为在收到不完整(较短)消息时检索完整记录。

有人知道这个问题的任何症状或根本原因吗?

编辑:我要提到的是,日志记录代码与Python日志记录手册中针对多个进程的代码几乎相同:https://docs.python.org/3/howto/logging-cookbook.html

0 个答案:

没有答案