Tornadao—httpserver+多进程

  1. httpserver


    import tornado.web
    import tornado.ioloop
    import tornado.httpserver # 新引⼊httpserver模块
    class IndexHandler(tornado.web.RequestHandler):
     """主路由处理类"""
     def get(self):
     """对应http的get请求⽅式"""
     self.write("Hello Tornado!")
    
    
    
    if __name__ == "__main__":
     app = tornado.web.Application([
     (r"/", IndexHandler),
     ])
     # 创建web服务器,并绑定我们⾃⼰的web应⽤
     http_server = tornado.httpserver.HTTPServer(app)
     http_server.listen(8000)
     tornado.ioloop.IOLoop.current().start()
  2. 多进程


    可以⼀次启动多个进程,修改上⾯的代码如下:
    # coding:utf-8
    import tornado.web
    import tornado.ioloop
    import tornado.httpserver
    class IndexHandler(tornado.web.RequestHandler):
     """主路由处理类"""
     def get(self):
     """对应http的get请求⽅式"""
     self.write("Hello Tornado!")
    if __name__ == "__main__":
     app = tornado.web.Application([
     (r"/", IndexHandler),
     ])
     http_server = tornado.httpserver.HTTPServer(app)
     # -----------修改----------------
     http_server.bind(8000)
     http_server.start(0)
    # ------------------------------
     tornado.ioloop.IOLoop.current().start()
    说明
    1.关于app.listen()
    app.listen()这个⽅法只能在单进程模式中使⽤。
    对于app.listen()与⼿动创建HTTPServer实例
    这两种⽅式,建议⼤家先使⽤后者即创建HTTPServer实例的⽅式,因为其对于理
    解tornado web应⽤⼯作流程的完整性有帮助,便于⼤家记忆tornado开发的模块
    组成和程序结构;
    2.关于多进程
    虽然tornado给我们提供了⼀次开启多个进程的⽅法,但是由于:
    每个⼦进程都会从⽗进程中复制⼀份IOLoop实例,如果在创建⼦进程前我们
    的代码动了IOLoop实例,那么会影响到每⼀个⼦进程,势必会⼲扰到⼦进程
    
    
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(8000)
    IOLoop的⼯作;
    所有进程是由⼀个命令⼀次开启的,也就⽆法做到在不停服务的情况下更新代
    码;
    所有进程共享同⼀个端⼝,想要分别单独监控每⼀个进程就很困难。
发布了209 篇原创文章 · 获赞 6 · 访问量 2917

猜你喜欢

转载自blog.csdn.net/piduocheng0577/article/details/105058629
今日推荐