如何从Tornado的IOStream中读取一个按键

2024-05-21 05:01:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的tornado应用程序,它从telnet客户端读取数据。 我使用基于TCPServer的处理程序来处理telnet会话(代码示例已简化)。在

class CliServer(TCPServer, LoggerMixin):
  def __init__(self):
    super(CliServer, self).__init__()

  def handle_stream(self, stream, address):
    #Some irrelevant code
    self.stream.read_bytes(max_buffsize, callback=self._on_read, streaming_callback=None, partial=True)

  def _on_read(self, data)
    #process data
    pass

处理程序在主IOLoop中注册:

^{pr2}$

我想在从套接字读取任何数据块后立即接收它。此数据块将由“CliServer.\u on\u read callback”处理。在

我当前实现的问题是这种方法BaseIOStream.read斨字节以“\r\n”终止后立即向我提供数据,这对我来说太晚了。 例如,当telnet用户键入“ab\tc\n”时,将使用“ab\tc”数据调用一次“on”read回调,而不是使用每个字符('a'、'b'、'\t'、'c')调用4次。在

我做错什么了?在


Tags: 数据self处理程序readdatastreamabinit