Tornado(一) 安装及Demo

    xiaoxiao2025-06-13  12

    1. 安装

    tornado的官网:http://www.tornadoweb.org/

    a) 直接下载安装包

    $ curl -L -O https://github.com/facebook/tornado/archive/v3.1.0.tar.gz $ tar xvzf v3.1.0.tar.gz $ cd tornado-3.1.0 $ python setup.py build $ sudo python setup.py install

    b) 从github上下载

    $ git clone https://github.com/tornadoweb/tornado.git $ cd tornado $ python setup.py build $ sudo python setup.py install

    c) 使用pip安装

    sudo pip install tornado

    测试

    安装完成后在python中测试一下,是否安装成功 $ python Python 2.7.6 (default, Mar 22 2014, 22:59:56) [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import tornado >>> 现在python已经安装成功

    2. Hello Tornado

    Demo hello.py

    import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web from tornado.options import define, options define("port", default=8000, help="run on the given port", type=int) class IndexHandler(tornado.web.RequestHandler): def get(self): greeting = self.get_argument('greeting', 'my friend') self.write('Hello ' + greeting + ', This is Tornado!') if __name__ == "__main__": tornado.options.parse_command_line() app = tornado.web.Application(handlers=[(r"/", IndexHandler)]) http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) tornado.ioloop.IOLoop.instance().start()

    逐句解读

    import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web 导入了一些Tornado模块 tornado.httpserver — 一个无阻塞HTTP服务器的实现 tornado.ioloop — 核心的I/O循环 tornado.options — 解析终端参数 tornado.web — 包含web框架的大部分主要功能,包含RequestHandler和Application两个重要的类 from tornado.options import define, options define("port", default=8000, help="run on the given port", type=int) 导入define,optins这两个模块,用于设置从读取参数和设置默认参数 上面的define是添加了一个port参数,默认8000,帮助文档,以及这个参数接收的类型int,我们用它来指定http监听的端口 如果在命令行参数中也有一个port的同名参数,那么这个参数就会成为一个全局tornado.options的一个属性, 如果用户没有使用这个这一参数,就是用define中的默认参数 class IndexHandler(tornado.web.RequestHandler): def get(self): greeting = self.get_argument('greeting', 'my friend') self.write('Hello ' + greeting + ', This is Tornado!') 这是tornado的请求处理函数类,当处理一个请求时,会将这个类实例化,并调取与HTTP请求的方式对应的方法, 本例子是定义了get方法,也就是说这个处理函数将对HTTP的GET请求作出相应,实际上RequestHandler类中定义了处理这些http方法的函数。 RequestHandler.get(*args, **kwargs) RequestHandler.head(*args, **kwargs) RequestHandler.post(*args, **kwargs) RequestHandler.delete(*args, **kwargs) RequestHandler.patch(*args, **kwargs) RequestHandler.put(*args, **kwargs) RequestHandler.options(*args, **kwargs) greeting = self.get_argument('greeting', 'my friend') Tornado的RequestHandler类有一系列有用的内建方法,包括getargument,我们在这里从一个查询字符串中取得参数greeting的值。( 如果这个参数没有出现在查询字符串中,Tornado将使用getargument的第二个参数作为默认值。) self.write('Hello ' + greeting + ', This is Tornado!') RequestHandler的另一个有用的方法是write,它以一个字符串作为函数的参数,并将其写入到HTTP响应中。 在这里,我们使用请求中greeting参数提供的值插入到greeting中,并写回到响应中。 if __name__ == "__main__": tornado.options.parse_command_line() app = tornado.web.Application(handlers=[(r"/", IndexHandler)]) 应用运行的入口,解析命令行参数 然后创建了一个Tornado的Application类的实例,并且handlers定义了根路径的路由和处理函数之间的映射 http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) tornado.ioloop.IOLoop.instance().start() 从这里开始的代码将会被反复使用:一旦Application对象被创建,我们可以将其传递给Tornado的HTTPServer对象, 然后使用我们在命令行指定的端口进行监听(通过options对象取出。)最后,在程序准备好接收HTTP请求后,我们创建一个Tornado的IOLoop的实例。

    转载请注明原文地址: https://ju.6miu.com/read-1299916.html
    最新回复(0)