以下是一个简单的 Tornado 非阻塞 HTTP 服务器的例子:
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, Tornado Non-blocking Server!")
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()
在这个例子中,MainHandler 处理器处理根路径的 GET 请求,返回 "Hello, Tornado Non-blocking Server!"。make_app 函数创建了一个应用实例,通过 app.listen(8888) 启动了一个监听端口为 8888 的非阻塞 HTTP 服务器。
Tornado 之所以非阻塞,是因为它使用了单线程的事件循环机制。当有请求到达时,Tornado 不会为每个请求创建一个新的线程或进程,而是通过异步 I/O、回调函数等机制,将请求事件注册到事件循环中,实现并发处理。这种非阻塞的设计使得 Tornado 能够轻松地应对高并发的场景,比如实时聊天应用、推送服务等。
需要注意的是,Tornado 中的异步处理通常采用协程(coroutine)的方式,使用 async def 和 await 关键字。这样的设计使得代码能够以更清晰和简洁的方式表达异步逻辑。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7431/Tornado