背景
一个线上接口会偶尔报错 [Errno 32] Broken pipe
, 在本地测试后接口正常,无法复现
解决过程
[Errno 32] Broken pipe异常属于IOError,分析此问题和IO操作有关
经过排查发现问题接口的代码中,发现有个print
,而其他正常的接口中均没有print
,猜想应该就是这个print将标准输出打满了,导致IO错误
删除print
代码,上线后接口正常,未发现报错情况
总结
在生产环境不要在代码中使用print
输出,应该使用logging将信息输出到日志文件中