tornado是另一个基于python的服务器框架,虽然不能向django一样给我们提供丰富的“建站工具”,不过它对epoll的支持使得非阻塞特性比较吸引人。下面也简单记录一下安装使用方法。
首先下载安装tornado,运行它还需要安装下面两个库
1,pycurl
(python setup.py install)
tornado没有提供django的manage.py,django-admin.py等工具,直接编码如下
list_publishers.html(模板)
<table> {% for p in publishers %} <tr> <td>Id #{{ p[0] }}</td> <td>Name #{{ p[1] }}</td> </tr> {% end %} </table>
web.py(代码)
import tornado.ioloop import tornado.web import tornado.database import sqlite3 def _execute(query): dbPath = '/home/ciaos/django.sqlite3' connection = sqlite3.connect(dbPath) cursorobj = connection.cursor() try: cursorobj.execute(query) result = cursorobj.fetchall() connection.commit() except Exception: raise connection.close() return result class Main(tornado.web.RequestHandler): def get(self): self.write("Main") class ListPublishers(tornado.web.RequestHandler): def get(self): query = ''' select * from books_publisher ''' publishers = _execute(query) self.render("list_publishers.html", publishers=publishers) application = tornado.web.Application([ (r"/", Main), (r"/publishers" , ListPublishers), ],debug=True) if __name__ == "__main__": application.listen(8888) tornado.ioloop.IOLoop.instance().start()
简单用ab测试一下性能,要比django性能高出一倍的样子(不过鉴于两个项目操作数据库的方式有些不一样,还是没有说服力,原因在于没能找到tornado对sqlite的原生支持)
ciaos@linux-53dr:~/mysite2> sudo /usr/sbin/ab2 -c 10 -n 10000 http://127.0.0.1:8888/publishers root's password: This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 127.0.0.1 (be patient) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: TornadoServer/2.0 Server Hostname: 127.0.0.1 Server Port: 8888 Document Path: /publishers Document Length: 63 bytes Concurrency Level: 10 Time taken for tests: 21.306 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Total transferred: 2190000 bytes HTML transferred: 630000 bytes Requests per second: 469.35 [#/sec] (mean) Time per request: 21.306 [ms] (mean) Time per request: 2.131 [ms] (mean, across all concurrent requests) Transfer rate: 100.38 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.2 0 7 Processing: 4 21 3.4 20 53 Waiting: 0 20 3.4 19 52 Total: 7 21 3.5 20 56 Percentage of the requests served within a certain time (ms) 50% 20 66% 21 75% 21 80% 22 90% 23 95% 25 98% 30 99% 42 100% 56 (longest request)生产环境的配置可以参照 Tornado概览 的介绍
user nginx; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; use epoll; } http { # Enumerate all the Tornado servers here upstream frontends { server 127.0.0.1:8888; server 127.0.0.1:8000; } include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; keepalive_timeout 65; proxy_read_timeout 200; sendfile on; tcp_nopush on; tcp_nodelay on; gzip on; gzip_min_length 1000; gzip_proxied any; gzip_types text/plain text/html text/css text/xml application/x-javascript application/xml application/atom+xml text/javascript; # Only retry if there was a communication error, not a timeout # on the Tornado server (to avoid propagating "queries of death" # to all frontends) proxy_next_upstream error; server { listen 80; # Allow file uploads client_max_body_size 50M; location ^~ /static/ { root /var/www; if ($query_string) { expires max; } } location = /favicon.ico { rewrite (.*) /static/favicon.ico; } location = /robots.txt { rewrite (.*) /static/robots.txt; } location / { proxy_pass_header Server; proxy_set_header Host $http_host; #proxy_redirect false; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_pass http://frontends; } } }
简单的配置,就让我们可以远离老掉牙的php-cgi编程了。简单的mvc代码见附件
相关推荐
本资源提供了四个知名Web框架——Django、Tornado、Flask和Twisted的随书完整源代码,帮助开发者深入理解和实践这些框架,提升开发效率。以下是对这四个框架的详细介绍: 1. Django:Django是一个高级的Python Web...
《Python高效开发实战》这本书全面覆盖了Python web开发的四大框架——Django、Tornado、Flask和Twisted,旨在帮助读者深入理解并熟练运用这些框架进行高效的Web应用开发。以下将详细介绍这四个框架及其核心知识点。...
本项目以Python为基础,利用Tornado Web服务器框架和Bootstrap前端框架,构建了一个功能完善的博客系统——螺壳网。以下将详细介绍Tornado和Bootstrap在构建CMS内容管理系统中的应用。 ### Tornado框架 Tornado是...
在"macos"环境下,这些框架的使用可能会涉及到Homebrew包管理器的安装、Python环境的配置、虚拟环境的创建以及跨平台兼容性问题。学习如何在macOS系统上运行和调试这些项目,有助于开发者提升跨平台开发的能力。 综...
一、概述:Tornado——嵌入式系统的开发利器 Tornado2作为Wind River Systems公司出品的一款专业工具集,主要用于支持基于VxWorks操作系统的嵌入式软件开发。VxWorks是一款实时操作系统(RTOS),在航空航天、军事、...
2. **配置**:在你的Tornado应用中,你需要配置数据库连接,这通常包括数据库引擎、连接池等设置。 3. **定义模型**:使用SQLAlchemy的ORM方式定义数据模型,这涉及到创建继承自`sqlalchemy.ext.declarative....
1. **Django安装与配置**:安装Django、创建项目、配置数据库等。 2. **模型层(Model)**:定义数据模型、自定义字段、关系字段等。 3. **视图层(View)**:处理请求、返回响应、使用模板等。 4. **模板系统**:...
本文将深入剖析一个使用memcached实现Tornado session的项目——tornado-memcached-sessions。 首先,我们来看一下`app.py`中的设置。在这个例子中,创建了一个名为`Application`的类,它是`tornado.web....
【云海统一权限管理系统——基于Python的Tornado框架】 在当今信息化社会,权限管理成为企业、组织以及各类系统中不可或缺的重要组成部分。云海统一权限管理系统(SOCRight)就是这样一款高效、安全的解决方案,它...
安装完成后,即可在Python代码中导入并使用Tornado库,创建Web服务器、WebSocket服务或处理异步请求。 总结,`tornadoes-2.3.2.tar.gz`提供了Tornado库的一个旧版本,它是Python开发中的重要工具,尤其适用于构建高...
构建VxWorks开发环境涉及安装Tornado集成开发环境、理解和配置相关工具以及熟悉VxWorks的操作和编程模型。以下是对VxWorks开发环境构建的详细说明: 一、Tornado集成开发环境 Tornado是VxWorks的主要开发工具,它...
目标机服务器——TargetServer** - **3. FTP服务器** - **4. WindSH** - **4.1 启动和关闭WindSh** - **4.2 WindSh的使用**:包括任务管理命令、任务信息命令、系统命令、网络状态显示等。 综上所述,本实验指导...
最初的服务器是512MB内存的云主机,但因流量超出预期和网络延迟问题,知乎转而采用自购服务器并进行了高可用性设计,包括Web和数据库的主从复制以及读写分离。 随着用户数量增长,单机存储成为瓶颈,知乎开始使用...
graia-ariadne是一个强大的图形用户界面(GUI)框架,它基于Tornado异步Web服务器,旨在为Python开发者提供一个简洁、高效的工具来创建现代Web应用程序。该库的核心理念是将前端和后端紧密结合,让开发者能够以类似...
6. 客户端配置:通过简单的代码配置,可以设置服务器URL、项目ID和其他选项,以定制错误报告的行为。 7. 插件和集成:Raven支持多种框架和库的插件,如Django、Flask、Tornado等,使错误追踪更加无缝。 8. 日志...
- 掌握Python3安装与配置方法。 - 熟悉常用的Python集成开发环境(IDE)如PyCharm、Jupyter Notebook等。 - **实践操作:** - 在不同操作系统(Windows、Linux、MacOS)上安装Python3。 - 使用pip安装常用...