Tornado HTTP 服务器
Tornado 通过 tornado.web.Application 来创建 HTTP 服务器。以下是一个简单的例子:
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)
print("Server is running at http://localhost:8888")
tornado.ioloop.IOLoop.current().start()
在这个例子中,MainHandler 处理器处理根路径的 GET 请求,并返回 "Hello, Tornado!"。
Tornado HTTP 客户端
Tornado 的 HTTP 客户端模块位于 tornado.httpclient,可以用于发起异步的 HTTP 请求。以下是一个简单的 HTTP 客户端示例:
import tornado.ioloop
import tornado.httpclient
async def fetch():
url = "http://localhost:8888/"
response = await tornado.httpclient.AsyncHTTPClient().fetch(url)
print(f"Response from {url}: {response.body.decode()}")
if __name__ == "__main__":
tornado.ioloop.IOLoop.current().run_sync(fetch)
在这个例子中,fetch 函数使用 Tornado 的异步特性,使用 AsyncHTTPClient().fetch() 发起了一个 GET 请求,获取服务器的响应,并打印响应的内容。
需要注意的是,Tornado 的 HTTP 客户端是异步的,可以配合 await 和 async def 使用,也可以使用 tornado.ioloop.IOLoop.current().run_sync 来同步运行异步函数。
这两个组件可以在一个 Tornado 应用中同时存在,使得开发者能够灵活地构建同时处理请求和发起请求的系统。可以根据实际需求选择在应用中使用 HTTP 服务器、HTTP 客户端,或者同时使用它们。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7430/Tornado