我有一个python程序,我使用服务器套接字发送数据。有一个类有一些Threading
方法。每个方法都检查一个队列,如果队列不为空,它会通过服务器套接字发送数据。队列正在填充客户端发送给服务器的内容(服务器正在侦听输入请求)。通过方法调用完成发送:
def send(self, data):
self.sqn += 1
try:
self.clisock.send(data)
except Exception, e:
print 'Send packet failed with error: ' + e.message
当程序启动时,发送速率大约为500,但过了一段时间它会立即减少到30,但有以下异常:
Send packet failed with error: <class 'socket.error'>>>[Errno 32] Broken pipe
我不知道是什么原因引起了这个增长率!有什么想法吗?
答案 0 :(得分:1)
该错误来自您的发送功能,试图写入另一侧关闭的套接字。如果是这样,那么使用
捕获异常import errno, socket
try:
self.clisock.send(data)
except socket.error, err:
if err[0] == errno.EPIPE:
# do something
else:
pass # do something else
如果这不是客户端的预期行为,那么您将不得不使用相应的客户端代码更新您的帖子。