当前位置: 代码迷 >> 综合 >> python实现scoket支持IPV6报错:[Errno 32] Broken pipe
  详细解决方案

python实现scoket支持IPV6报错:[Errno 32] Broken pipe

热度:78   发布时间:2023-10-12 13:09:44.0

一、问题描述:
公司业务代码要求支持PV6场景,代码做了修改,但是放到环境出现了问题。
异常信息:[Errno 32] Broken pipe

[ERROR] 2021-03-09 13:02:27,373 /opt/mcu/nms_starter/starter/threads/msg_threads.py 115: [graphite_statistic_thread] [Errno 32] Broken pipe

异常抛出点:
python实现scoket支持IPV6报错:[Errno 32] Broken pipe
二、找问题:
首先根据报错信息:[Errno 32] Broken pipe 一顿狂百度,stackoverflow上搜,搜的大部分都是:**这个错误发生在当client端close了当前与你的server端的socket连接,但是你的server端在忙着发送数据给一个已经断开连接的socket。**但是通过查看进程发现并没有断开,正常连接,最后有看了socket支持连接IPV6的源码,写的也没问题:socket(socket.AF_INET6)
最后通过打印日志信息发现了问题:
python实现scoket支持IPV6报错:[Errno 32] Broken pipe这地方是为了接口ip带向[]做过的处理,我们socket不需要[],self.socket.connect((GRAPHITE_IP, int(GRAPHITE_PORT)))这里面直接ip参数就行了,也就是 GRAPHITE_IP = 2001:5::c0:c0:2:61