博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tornado
阅读量:4624 次
发布时间:2019-06-09

本文共 2439 字,大约阅读时间需要 8 分钟。

优势:    1. 轻量级的 web 框架, 和Django比    2. 性能卓越, 使用 异步非阻塞    3. 处理 C10K 的场景, C10K : concurrent(并发) 10000 , 能够同一时间处理10000个并发的连接 和Django对比:                                 django        tornado    路由                           有        有    模板                   有          有    视图                   有            有    ORM                         有            无    session                        有            无    cookie                         有            有    form,admin, 中间件等           有            无
 
1. 单个进程打开的文件描述符(fd文件句柄)    select : 1024    poll   : 稍微比select好一些, 没有限制    epoll  : 没有限制 (1个g内存, 监听10W个端口) 2. 监听socket的方式:    select : 轮询, 一个一个的检查, 看有没有活跃, 当线性增加socket的时候,            轮询的速度就会非常的耗时    poll   : 对select稍微进行了优化, 只是修改了文件描述符,监听方式不变    epoll  : 会将连接的socket注册到epoll中, 相当于socket的花名册, 如果有一个socket活跃了,           会回调一个函数, 通知epoll,赶紧过来处理 3. 内存空间拷贝方式:    select : 需要将数据从内核态拷到用户态, 这个过程比较耗时    poll   : 同上    epoll  : 内存态数据和用户态数据时共享的 参考博客: https://www.cnblogs.com/jeakeven/p/5435916.html
import tornado.web import tornado.ioloop from tornado.options import options,define,parse_config_file,parse_command_line import config define('port',default=8002,type=int,) class IndexHandler(tornado.web.RequestHandler):    def initialize(self):       print('hahha')    def get(self, *args, **kwargs):       self.write('hello world')       url=self.reverse_url('index')       print(url)    def post(self,*args,**kwargs):       pass class Site(tornado.web.RequestHandler):    def initialize(self,username):       self.username = username       print('hahha')    def get(self, *args, **kwargs):       print(self.get_query_argument('pwd',None))       print(self.username)       self.write('hello world site')    def post(self,*args,**kwargs):       pass if __name__ == '__main__':    # parse_command_line()    parse_config_file('config')    app = tornado.web.Application([          tornado.web.url(r'/site/', Site,{'username':'zzf'}),          tornado.web.url(r'/index/', IndexHandler,name='index'),       ])    app.listen(config.options.get('port'))    tornado.ioloop.IOLoop.current().start() 传参与配置 1.
from tornado.options import options,define
define('port',default=8002,type=int,) 2.命令行
parse_command_line()
from tornado.options import options,parse_command_line
3.文件txt
parse_config_file('config')
app.listen(config.options.port) 4.配置文件
parse_config_file('config')
app.listen(config.options.get('port'))
 

转载于:https://www.cnblogs.com/wrqysrt/p/10974133.html

你可能感兴趣的文章
ajaxFileUpload 异步上传数据
查看>>
图书馆管理需求分析
查看>>
Vuforia添加虚拟按键
查看>>
状压$DP$练习
查看>>
题解 P1944 最长括号匹配_NOI导刊2009提高(1)
查看>>
10.计算属性
查看>>
The C in C++
查看>>
tengine + lua 实现流量拷贝
查看>>
JVM 垃圾回收机制,何时触发 MinorGC 等操作
查看>>
第十五篇:C程序的存储空间布局
查看>>
[Swift实际操作]七、常见概念-(2)点CGPoint和变形CGAffineTransform的使用
查看>>
npm 安装包
查看>>
JavaScript总结(五)
查看>>
case when的用法
查看>>
四、移植 JZ2440 开发板
查看>>
9.27 代码笔记
查看>>
jquery.post请求并处理返回xml数据
查看>>
es6笔记 day3---对象简介语法以及对象新增
查看>>
StringHelper.cs(20170223)
查看>>
二维码生成
查看>>