参考文档:
- https://docs.pythontab.com/tornado/introduction-to-tornado/ch1.html#ch1-2-1-1
- https://www.tornadoweb.org/en/stable/guide/intro.html
开发环境:
- python3.7
- tornado5.1
Tornado是什么?
Tornado是一个Python Web框架和异步网络库,最初是在FriendFeed上开发的。通过使用非阻塞网络I / O,Tornado可以扩展到数万个开放连接,使其成为长轮询, WebSockets和其他需要与每个用户建立长期连接的应用程序的理想选择 。
不同于那些最多只能达到10,000个并发连接的传统网络服务器,Tornado在设计之初就考虑到了性能因素,旨在解决C10K问题,这样的设计使得其成为一个拥有非常高性能的框架。此外,它还拥有处理安全性、用户验证、社交网络以及与外部服务(如数据库和网站API)进行异步交互的工具。
tornado大致分为四个部分:
- tornado.web
- tornado.ioloop
- tornado.httpserver
- tornado.gen(当前版本可以使用
async def
代替)
安装
pip install tornado
简单入门
我们从简单的栗子开始,逐渐深入了解tornado吧~
Hello Tornado
# -*- coding: utf-8 -*-
# --------------------------------------
# @Time : 2019/1/28 上午11:43
# @Author : cxy =.=
# @File : hello.py
# @Software: PyCharm
# @Desc :
# --------------------------------------
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)
class IndexHandler(tornado.web.RequestHandler):
def get(self):
greeting = self.get_argument('greeting', 'Hello')
self.write(greeting + ', friendly user!')
if __name__ == "__main__":
tornado.options.parse_command_line()
app = tornado.web.Application(
handlers=[
(r"/", IndexHandler)
]
)
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
编写一个Tornado应用中最多的工作是定义类继承Tornado的RequestHandler类。在这个例子中,我们创建了一个简单的应用,在给定的端口监听请求,并在根目录("/")响应请求。
你可以在命令行里尝试运行这个程序以测试输出:
python hello.py --port=8000
现在你可以在浏览器中打开http://localhost:8000, 或者打开另一个终端窗口使用curl测试我们的应用:
此时&