Python出现Broken pipe问题

1、 pipe容量不足

使用nohup后台进程处理之后信息会不断发送给远程pc,如果关闭控制台,会导致pipe堵塞,如果信息接着不断发送,就会导致pipe容量不足,信息堵塞。
solution:
重定向输出,使用stdout代替print,将print的内容输入到文件中;或者更加简洁的方法是,在控制台运行程序的时候使用 > 或 >>,将print的结果直接输入到文件中。 前者是覆盖书写,后者是追加书写。具体方法可以百度或者google。

2、 SIGPIP信号异常

如果已经重定向输出,仍然有这个问题,那可能是因为当head程序从管道的一端读取到足够的数据后就会关闭管道,而python程序正在管道的另一端写入,于是python程序就会接收到SIGPIPE信号使程序异常退出。而tail命令是等管道写入完成后再关闭管道,所以可以让python忽略这个信号。
solution:
加上如下代码

import sys from signal import signal, SIGPIPE, SIG_DFL
#让 python 忽略 SIGPIPE 信号,并且不抛出异常
signal(SIGPIPE,SIG_DFL)

reference:
https://blog.csdn.net/woay2008/article/details/83592298
https://stackoverflow.com/questions/14207708/ioerror-errno-32-broken-pipe-python

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值