简体   繁体   English

回显http服务器龙卷风

[英]echo http server tornado

How can I create an HTTP echo server from 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()

How do I make of this http echo server what's wrong? 我该怎么做这个http echo服务器出了什么问题? not much i am newbie Thanks! 我不是新手,谢谢!

  1. Your question would be more clear if you explained what happened when you run this code, and what you expected instead. 如果您解释了运行此代码时发生的情况以及期望的结果,则您的问题将更加清楚。

  2. One TCPServer object may handle many connections, so instead of assigning to self.stream in handle_stream , you should make a new object to handle this stream. 一个TCPServer对象可以处理许多连接,因此,应在该对象上创建一个新对象,而不是在handle_stream中分配给self.stream。

  3. The second argument to stream.write is a callback; stream.write的第二个参数是回调; it looks like you meant self._stream.write(data + '\\n') . 看起来你的意思是self._stream.write(data + '\\n')

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

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