繁体   English   中英

回显http服务器龙卷风

[英]echo http server tornado

如何从Tornado创建HTTP回显服务器?

#!/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服务器出了什么问题? 我不是新手,谢谢!

  1. 如果您解释了运行此代码时发生的情况以及期望的结果,则您的问题将更加清楚。

  2. 一个TCPServer对象可以处理许多连接,因此,应在该对象上创建一个新对象,而不是在handle_stream中分配给self.stream。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM