基于IOLoop的Web Server

来源:互联网 发布:中金交易软件 编辑:程序博客网 时间:2024/06/05 04:51

上次介绍了如何使用Flask来实现Web Server,这次使用另外一种方法,IOLoop的方式实现Web Server功能。
直接上一个简单的helloworld的demo。

import tornado.ioloopimport tornado.webimport jsonfrom tornado.web import RequestHandlerfrom tornado.web import Applicationfrom tornado.ioloop import IOLoopclass HelloWorldHandler(RequestHandler):    def initialize(self):        print("create new handler")    def get(self):        self.write("Hello world, " + self.get_argument('msg'))    def post(self):        msg = json.loads(str(self.request.body, encoding = "utf-8"))        print(type(msg))        self.write('Hello world, ' + msg['msg'])application = Application([    (r'/', HelloWorldHandler),])if __name__ == "__main__":    application.listen(8888)    IOLoop.instance().start()

在实现RequestHandler的过程中最好不要Override它的__init__方法,在__init__方法内留有了可供扩展的初始化接口initialize,实现这个方法就能实现初始化状态的操作。

需要注意的一个特点就是,IOLoop每监听到一个请求之后就会创建一个对应的Handler来处理这个请求,所以Handler不是单例的。

demo分别实现了get和post两种方法,直接在浏览器地址栏访问http://localhost:8888/?msg=Johnson 可以调用get方法,利用Postman可以发送以下json到http://localhost:8888/实现调用。

{"msg":"johnson"}

Thanks

原创粉丝点击