tornado,是使用Python编写的一个强大的、可扩展的Web服务器及Python作web开发框架。网上说Tornado和现在的主流Web服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对epoll的运用,Tornado每秒可以处理数以千计的连接,因此Tornado是实时 Web 服务的一个理想框架。这些我目前还没了解那么多,先不多说。听这些介绍好像不错。本文地址:http://www.04007.cn/article/477.html,未经许可,不得转载.
简单地说,或者用php来说,tornado就是你的nginx+thinkPHP(随便一个框架)的组合体。把tornado搭建好了之后,直接启动tornado下的python脚本命令(指定端口),就可以实现以WEB的形式访问服务器,tornado端可以查看访问的日志。类似于nginx的请求日志。本文地址:http://www.04007.cn/article/477.html,未经许可,不得转载.
tornado的安装:本文地址:http://www.04007.cn/article/477.html,未经许可,不得转载.
我的服务器已经搭建好了pip,安装起来非常简单。直接pip install tornado即完工。本文地址:http://www.04007.cn/article/477.html,未经许可,不得转载.
tornado第一段python代码:hello.py本文地址:http://www.04007.cn/article/477.html,未经许可,不得转载.
#!/usr/bin/python #coding:utf-8 #引入必要库 import tornado.httpserver; import tornado.ioloop; import tornado.options; import tornado.web; from tornado.options import define,options; define("port", default=8080, help="run on the given port", type=int) #定义一个处理的方法,也就是一个控制器 class IndexHandler(tornado.web.RequestHandler): def get(self): who = self.get_argument('who', '') if who == '': self.write('please pass parameter:who through get'); else: self.write('hello ' + who + ', how are you!'+"n") #框架启动时的执行就去,绑定执行控制器和端口,开始监听 if __name__ == "__main__": tornado.options.parse_command_line() app = tornado.web.Application(handlers=[("/", IndexHandler)]) http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) tornado.ioloop.IOLoop.instance().start()启动tornado WEB服务器并访问本文地址:http://www.04007.cn/article/477.html,未经许可,不得转载.
启动python脚本,则开始监听端口,但启动时出现报错:NameError: global name 'memoryview' is not defined本文地址:http://www.04007.cn/article/477.html,未经许可,不得转载.
#报错如下: [E 180110 14:42:19 http1connection:731] Uncaught exception Traceback (most recent call last): File "/usr/lib64/python2.6/site-packages/tornado/http1connection.py", line 722, in _server_request_loop ...... File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 910, in _consume b = (memoryview(self._read_buffer) NameError: global name 'memoryview' is not defined这个报错是版本不兼容,可以降低tornado版本,也可以提高python版本,我的python版本是2.6,我这里降低了tornado版本。如下:本文地址:http://www.04007.cn/article/477.html,未经许可,不得转载.
#卸载tornado pip uninstall tornado #更新安装tornado版本 pip install tornado==2.1.1再次启动python脚本,并从浏览器里请求。命令启动后实时显示的请求日志如下:如下图,图中的--port实际也可以省略,因为程序中已经设置了默认的port8080本文地址:http://www.04007.cn/article/477.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/477.html,未经许可,不得转载.
浏览器中的请求截图:本文地址:http://www.04007.cn/article/477.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/477.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/477.html 未经许可,不得转载.