2015-05-10 76 views
0

我有一个python程序,我使用服务器套接字发送数据。有一个类有一些Threading方法。每种方法都会检查一个队列,如果队列不是空的,它会通过服务器套接字发送数据。队列正在填充客户端发送到服务器的内容(服务器正在监听输入请求)。发送与方法调用来完成:通过python中的单个套接字多次发送数据

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 

如果不打算对客户端的部分行为,那么你就必须更新与相应的客户端代码,您的文章捕获异常。

相关问题