01-什么是tornado


在 Python 的众多网络框架中,Tornado 以其非阻塞性的网络 I/O 和高并发的能力而著名。它是一个强大且灵活的工具,可以用于构建各种各样的 Web 服务,尤其擅长于实时应用。

Tornado 的诞生和演进

Tornado 诞生于 FriendFeed,这是一家由前 Google 员工创建的社交网络聚合服务公司。这家公司在 2009 年被 Facebook 收购之后,Tornado 就被用于支撑其庞大的实时更新服务。也正是在那个时候,Tornado 被开源,自此成为 Python 社区中的一个重量级成员。

Tornado 之所以出来,主要是因为当时的 Python 网络框架并不能满足 FriendFeed 高并发、实时通信的需求。这是因为,传统的网络服务模型通常是阻塞性的,即打开一个网络连接,然后等待并获取响应,再关闭连接。但对于长连接或者需要实时交互的服务来说,这样的模型效率很低,因为它在等待响应的时候服务器不能处理其他的连接。

这就是 Tornado 要解决的问题。Tornado 提供了一种非阻塞性的网络 I/O 模型,可以同时处理大量的开放连接。这种模型非常适合实时服务,比如 WebSockets,因为这种服务需要长期打开连接,以便在用户之间传输实时的更新。

Tornado 的功能和特性

Tornado 并不是一种传统意义上的 Web 开发框架,例如 Django 或 Flask,尽管它提供了一些类似的工具,如请求处理、模板、安全性和用户身份验证,但是它的主要力量在于与众不同的网络 I/O 模型。

接下来,我们将进一步探讨 Tornado 的这些特性以及它们如何使 Tornado 成为一个强大的网络框架:

非阻塞性 Web 服务器

Tornado 有一个自带的、高效的 HTTP 服务器,它使用非阻塞性的网络 I/O,可以处理大量的并发连接。这个服务器是通过 epoll(在 Linux 上)或 kqueue(在 BSD 和 Mac OS X 上)来实现的,这些是操作系统提供的高级 I/O 接口,可以高效地处理数以万计的并发连接。

异步编程

Tornado 提供了基于生成器的异步接口,以便创建非阻塞性的应用。它使用了 Python 的 yield 语句来暂停和恢复函数的执行,这使得你能在看似顺序执行的代码中进行 IO 操作,而不阻塞整个应用。

Web 框架功能

虽然 Tornado 的主要焦点是其非阻塞性的网络服务,但它也提供了一些基本的 Web 开发工具。这包括:

  • RequestHandler 用于处理 HTTP 请求
  • Application 和 Router 用于解析URL和分发请求
  • 安全和用户身份验证功能
  • 模板和静态文件支持

以上就是 Tornado 的基本介绍,接下来的文章我们将进一步详细探讨 Tornado 的高级特性和应用场景。

tornado安装及简单应用

不同版本的tornado对于python版本也有要求,注意安装时选择好版本哟

pip install tornado

简单应用示例

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(18888)
    tornado.ioloop.IOLoop.current().start()

这个程序做的事情如下:
它定义了一个名叫 MainHandler 的请求处理器类,当一个 GET 请求到达,这个处理器会响应 “Hello, world”。

make_app 函数创建一个 tornado.web.Application 的实例,该实例包含了应用的路由信息,将根 URL 映射到了我们定义的处理器 MainHandler。

if __name__ == "__main__"条件下的代码会在这个脚本作为主程序运行时执行。它首先会创建并启动一个应用,然后启动 Tornado 的 I/O 循环。

要启动这个应用,你需要打开一个终端,导航到包含你的 python 文件的目录,然后执行 python main.py。然后,在你的 Web 浏览器中打开 http://localhost:8888,你应该会看到 “Hello, world” 这样的欢迎信息。
访问18888端口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

safina ~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值