Python 在macOS上,龙卷风';s read_bytes在一次接收超过1024字节时挂起

Python 在macOS上,龙卷风';s read_bytes在一次接收超过1024字节时挂起,python,macos,tornado,Python,Macos,Tornado,源代码是一个简单的echo服务器,它接收1024字节并按原样返回。奇怪的是,在macOS上,它挂起的输入超过1024字节。(原始插座/扭曲不存在此问题) 如何复制: 运行服务器python3server.py 打开其他终端,然后运行nc localhost 1234(telnet也是如此) 粘贴一些任意的1024字节,然后按Control+D(EOF) 挂断 如果我粘贴1023个字节,按Ctrl+D,然后再次键入1个字节并键入Ctrl+D,则会正常处理回显 它在Linux(Docker)上运行良

源代码是一个简单的echo服务器,它接收1024字节并按原样返回。奇怪的是,在macOS上,它挂起的输入超过1024字节。(原始插座/扭曲不存在此问题)

如何复制:

  • 运行服务器
    python3server.py
  • 打开其他终端,然后运行
    nc localhost 1234
    (telnet也是如此)
  • 粘贴一些任意的1024字节,然后按Control+D(EOF)
  • 挂断
  • 如果我粘贴1023个字节,按Ctrl+D,然后再次键入1个字节并键入Ctrl+D,则会正常处理回显

    它在Linux(Docker)上运行良好

    导入龙卷风
    导入tornado.ioloop
    导入tornado.tcpserver
    输入tornado.iostream
    类EchoServer(tornado.tcpserver.tcpserver):
    异步定义句柄\u流(自身、流、地址):
    尽管如此:
    尝试:
    消息=等待流。读取字节(1024)
    等待流。写入(消息)
    除tornado.iostream.StreamClosedError外:
    打破
    server=EchoServer()
    服务器。收听(1234)
    tornado.ioloop.ioloop.instance().start()
    
    • 操作系统:macOS 10.14.6
    • Python版本:3.7.4
    • 龙卷风版本:6.0.3/5.1.1

    经过调查,我注意到macOS使用的nc和Linux使用的nc是不同的。在macOS上打开Tornado服务器,在Linux上打开nc(Docker)确认它工作正常