Tornado 是一个强大的 Python Web 框架,以其高性能、异步非阻塞的特性而备受开发者青睐。下面通过一些代码示例来带你领略 Tornado 的魅力。
首先,安装 Tornado 非常简单,只需要在命令行中输入pip install tornado
即可。
一个简单的 Tornado Web 应用如下:
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, Tornado!")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
在这个例子中,我们定义了一个名为MainHandler
的类,它继承自tornado.web.RequestHandler
。在get
方法中,我们简单地返回了一个字符串“Hello, Tornado!”。然后,我们使用tornado.web.Application
类创建了一个应用,并将根路径/
映射到MainHandler
。最后,我们让应用监听 8888 端口,并启动 IOLoop。
Tornado 支持异步处理,这在处理耗时的操作时非常有用。比如,我们可以使用异步的方式获取一个网页的内容:
import tornado.httpclient
import tornado.ioloop
import tornado.web
class AsyncHandler(tornado.web.RequestHandler):
async def get(self):
http_client = tornado.httpclient.AsyncHTTPClient()
response = await http_client.fetch("https://www.example.com")
self.write(response.body)
def make_app():
return tornado.web.Application([
(r"/async", AsyncHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
在这个例子中,我们定义了一个名为AsyncHandler
的类,在get
方法中使用异步的方式获取了一个网页的内容,并将其返回给客户端。
Tornado 还支持模板渲染,让我们可以创建更加丰富的网页。下面是一个使用模板的例子:
import tornado.ioloop
import tornado.web
class TemplateHandler(tornado.web.RequestHandler):
def get(self):
self.render("template.html", title="Tornado Template", content="This is some content.")
def make_app():
return tornado.web.Application([
(r"/template", TemplateHandler),
], template_path="./templates")
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
假设我们有一个模板文件template.html
如下:
<!DOCTYPE html>
<html>
<head>
<title>{
{ title }}</title>
</head>
<body>
<h1>{
{ content }}</h1>
</body>
</html>
在这个例子中,我们将模板文件的路径传递给了Application
类,并在TemplateHandler
中使用render
方法渲染了模板,将动态数据传递给模板。
通过这些代码示例,我们可以看到 Tornado 的强大和灵活性。它不仅可以快速构建简单的 Web 应用,还可以处理复杂的异步任务和模板渲染。走进 Tornado 的精彩世界,让我们一起畅享 Web 新体验。