Python 回声http服务器龙卷风

Python 回声http服务器龙卷风,python,http,echo,tornado,Python,Http,Echo,Tornado,如何从Tornado创建HTTP echo服务器 #!/usr/bin/env python import signal from tornado.ioloop import IOLoop from tornado.tcpserver import TCPServer import tornado.web def handle_signal(sig, frame): IOLoop.instance().add_callback(IOLoop.instance().stop) cla

如何从Tornado创建HTTP echo服务器

#!/usr/bin/env python

import signal
from tornado.ioloop import IOLoop
from tornado.tcpserver import TCPServer
import tornado.web

def handle_signal(sig, frame):
    IOLoop.instance().add_callback(IOLoop.instance().stop)

class EchoServer(TCPServer):
    def handle_stream(self, stream, address):
        self._stream = stream
        self._read_line()

    def _read_line(self):
        self._stream.read_until('\n' ,self._handle_read)

    def _handle_read(self, data):
        self._stream.write(data, '\n')
        self._read_line()

if __name__ == '__main__':
    signal.signal(signal.SIGINT, handle_signal)
    signal.signal(signal.SIGTERM, handle_signal)
    server = EchoServer()
    server.bind(8001)
    server.start(25)
    IOLoop.instance().start()
    IOLoop.instance().close()
如何使用此http echo服务器 怎么了?没什么,我是新手 谢谢

  • 如果您解释了运行此代码时发生了什么,以及您期望的结果,您的问题将更加清楚

  • 一个TCPServer对象可能处理多个连接,因此您应该创建一个新对象来处理此流,而不是在
    handle\u stream
    中分配给self.stream

  • stream.write的第二个参数是回调;看起来您的意思是
    self.\u stream.write(data+'\n')


  • 当我运行这段代码时,运行TCP echo server,他对我说,因为它应该只有telnet,我回答说他也有http,node.js中有一个关于http echo server的问题,但我需要知道,一般来说,服务器必须接受POST请求(body POST request是json),如果你想要http,你应该从HTTPServer开始,不是普通的TCPServer。