Tornado启动流程分析

本文通过一个简单的HelloWorld示例介绍了Tornado Web框架的基本使用方法。该示例展示了如何定义处理程序类、设置路由以及启动服务器监听指定端口。Tornado通过封装底层细节实现了高效的异步IO处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


我们先来看一下所有地方都会出现的Hello World的例子:

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

从上边的例子可以看出,tornado显示定义了一个Application, 在Application定义了不同的URI的路由,例子中给出的URI的路由就是r"/",对应处理类就是MainHandler,他们被放在同一个tuple里形成了关联。Application接受一个列表,因此可以在这边定义多个全局路由对应不同的处理方式。

之后让这个Application去监听8888端口。这边其实隐藏了不少细节,Application的listen方法其实是对HTTPServer的lisnten进行了一个封装,而HTTPServer又是调用TCPServer的listen方法监听的端口。

我们都知道一般服务器的工作流程:首先按照socket->bind->listen顺序创建listen socket监听客户端,然后当socket中有数据过来的时候,再处理这部分数据。

这个流程就跟上边的listen对上了, 只不过框架帮我们隐藏了很多细节。在监听完端口之后,就会运行一个IOLoop的单例实例,然后服务器就正式开始运行了。当然中间其实有很多其他的步骤,比如注册socket到IOLoop, IOLoop的while大循环处理数据等。之后可以再详细研究,贴一个从网上找到的一个启动的基本流程图





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值