我试图为一个类实现一个简单的epollweb服务器。在我尝试发送一个大文件之前,一切都很好。我注意到它发送了大约2/3的数据,然后只是坐在那里什么也不做。这就是我如何确保我的所有数据都已发送:
def sendResponse(self,fd,response):
if response:
totalsent = 0
MSGLEN = len(response)
while totalsent < MSGLEN:
sent = self.clients[fd].send(response[totalsent:])
if sent == 0:
raise RuntimeError("socket connection broken")
totalsent = totalsent + sent
else:
self.poller.unregister(fd)
self.clients[fd].close()
del self.clients[fd]
我有没有在中小型文件中提到过这个作品。我只注意到当试图发送1.7mbs或更大的文件时会中断。在
如果可以,请跳过重新发明轮子和使用ZeroMQ消息传递层的阶段。在
您可能会忘记您的领域和问题的所有精力都集中在这一点上。ZeroMQ提供了一个概念和一组现成的工具,用于添加(几乎)线性的可扩展性、资源池、故障恢复能力、更高层的抽象协议等等。在
对于最初的一块蛋糕,从Nicholas Piel尝一尝
花一周时间阅读Pieters Hintjens的《代码连接,第一卷》将向您介绍一个分布式处理的新世界,您已经准备好了,只需准备好重新使用大师的专业知识。在
你得到了什么?
极快的速度,无论是几个字节还是几GB的blob,低延迟等等,所有这些都来自于这样一个简单的代码:
PyZMQ文档内容如下:
^{pr2}$相关问题 更多 >
编程相关推荐