我正在寻找与pythonsocketserver保持连接的方法。我想避免以下情况。在
轮询输入
示例:
class SingleTCPHandler(SocketServer.StreamRequestHandler):
def handle(self):
while True:
message = self.rfile.readline().strip()
... do something with message
我要做的就是不断检查是否收到了什么。我想避免这种情况,因为服务器运行在Raspberry pi上,所以我希望尽可能减少不必要的计算。在
更新:2013年3月28日
看来接收插座()是阻塞呼叫。根据socketserver的文档:
The difference is that the readline() call in the second handler will call recv() multiple times until it encounters a newline character, while the single recv() call in the first handler will just return what has been sent from the client in one sendall() call.
也就是说如果接收插座()是一个阻塞调用,那么while True
不会导致持续检查是否有新消息到达,也不会像我最初想的那样消耗处理器。在
每条消息一个连接
示例:
class SingleTCPHandler(SocketServer.StreamRequestHandler):
def handle(self):
while True:
message = self.rfile.readline().strip()
... do something with message
这将在收到消息后关闭连接。但是,消息每60毫秒发送一次,因此客户机每次都初始化一个新的连接。这会给应该尽可能快的连接带来开销。在
问题
有没有一种方法可以在每次收到消息时得到某种“中断”?在
(概念)示例:
class SingleTCPHandler(SocketServer.StreamRequestHandler):
def handle(self):
if interrupt:
message = self.rfile.readline().strip()
... do something with message
我以前问过一个类似的question,但是这个问题总结了前一个问题中没有直接涉及的问题的本质。在
为了我自己的利益,我继续实施了一个版本。在
相关问题 更多 >
编程相关推荐