初识tornado
Tornado是一个可扩展的非阻塞式Web服务器及其相关工具的开源版本。Tornado每秒可以处理数以千计的链接,所以对实时Web服务来说,Tornado是一个理想的Web框架。
Tornado的安装和环境支持这里不再赘述,自行百度
首先经典的hello world 案例:
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define,options
define('port',default=8000,help='run port',type=int)
# define('version',default='0.0.1',help='version 0.0.1',type=str)
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write('Hello World')
'''
class AbcIndexHandler(tornado.web.RequestHandler):
def get(self):
self.write('budong')
class TestIndexHandler(tornado.web.RequestHandler):
def get(self):
abc = self.get_argument('abc','no')
self.write('hello '+abc)
# abc = self.get_arguments('abc')
# self.write(','.j· oin(abc))
print(abc)
'''
if __name__ == '__main__':
tornado.options.parse_command_line()
# print(options.port)
# print(options.version)
app = tornado.web.Application(
handlers=[
(r'/',IndexHandler),
#(r'/abc',AbcIndexHandler),
#(r'/test',TestIndexHandler),
]
)
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
运行该脚本,依次执行:
- 创建一个Application对象,并把一个正则表达式'/'和类名IndexHandler传入构造函数:tornado.web.Application(...)
- 执行Application对象的listen(...)方法
- 执行IOLoop类的类的 start() 方法,即:tornado.ioloop.IOLoop.instance().start()
整个过程其实就是在创建一个socket服务端并监听8000端口,当请求到来时,根据请求中的url和请求方式(post、get或put等)来指定相应的类中的方法来处理本次请求,在上述demo中只为url为http://127.0.0.1:8888的请求指定了处理类MainHandler(具体如何寻找见下文)。所以,在浏览器上访问:http://127.0.0.1:8000/,则服务器给浏览器就会返回 Hello,world ,否则返回 404: Not Found(tornado内部定义的值), 即完成一次http请求和响应。

浙公网安备 33010602011771号