1. Web 应用程序
Tornado 最初是设计用于构建 Web 应用程序的,它提供了灵活的路由、模板引擎、请求处理、静态文件服务等功能。通过 Tornado,你可以构建高性能的 Web 服务,适用于处理大量并发请求,特别是对实时性要求较高的应用。
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, Tornado Web Application!")
def make_app():
return tornado.web.Application([
(r'/', MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
print("Server is running at http://localhost:8888")
tornado.ioloop.IOLoop.current().start()
2. WebSocket 应用程序
Tornado 支持异步的 WebSocket,适用于实时的双向通信,如实时聊天、实时数据推送等应用。
import tornado.ioloop
import tornado.websocket
class MyWebSocketHandler(tornado.websocket.WebSocketHandler):
async def on_message(self, message):
# 处理接收到的消息
pass
async def open(self):
# WebSocket 连接建立时调用
pass
async def on_close(self):
# WebSocket 连接关闭时调用
pass
3. RESTful API 服务
Tornado 提供了支持 RESTful 风格的请求处理,使得构建 API 服务变得简单。
import tornado.ioloop
import tornado.web
class RestHandler(tornado.web.RequestHandler):
def get(self, resource_id):
self.write(f"GET resource {resource_id}")
def post(self, resource_id):
self.write(f"POST resource {resource_id}")
def delete(self, resource_id):
self.write(f"DELETE resource {resource_id}")
def make_app():
return tornado.web.Application([
(r'/resource/([^/]+)', RestHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
print("Server is running at http://localhost:8888")
tornado.ioloop.IOLoop.current().start()
4. 异步 HTTP 客户端
Tornado 的异步 HTTP 客户端适用于构建异步的网络爬虫、异步数据请求等场景。
import tornado.ioloop
import tornado.httpclient
async def fetch(url):
client = tornado.httpclient.AsyncHTTPClient()
response = await client.fetch(url)
print(f"Response from {url}: {response.body.decode()}")
if __name__ == "__main__":
tornado.ioloop.IOLoop.current().run_sync(lambda: fetch("http://www.example.com"))
这些只是 Tornado 可能用于的一小部分应用场景。由于 Tornado 的异步特性,它在处理大量并发连接时表现出色,适用于需要高性能和实时性的网络应用程序。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7438/Tornado