tornado 笔记
简单比较Django和Tornado
Django是走大而全的方向,注重的是高效开发,最出名的是全自动化管理后台
Tornado走的是少而精的方向,注重的是性能的优化,最出名的是异步非堵塞
安装方式:
通用:pip3 install tornado
还以可以下载wheel安装包进行安装,windows上可以到https://www.lfd.uci.edu/~gohlke/pythonlibs/#tornado进行下载
写一个简单的程序
# 调用tornado的web处理框架
import tornado.web
import tornado.ioloop class IndexHandler(tornado.web.RequestHandler):
""" 定义路由的需要类 """
def get(self):
""" 指定get请求方式,如果使用post方式只需要def post()即可 """
self.write('hello world') # 打印内容 if __name__ == '__main__':
# 定义路由
app = tornado.web.Application([(r'/', IndexHandler)])
app.listen(8000) # 设置监听端口
tornado.ioloop.IOLoop.current().start() # 循环当前线程
tornado.ioloop.IOLoop是重点:
在系统中会使用epoll就相当是一个管家里面会进行socket()进行监听,如果有用户发送信息过来,就会访问定义的路由表,再通过路由表查找类
值得注意的是:如果同时有两个用户(socket)同时进行访问,那么会造成其中一个进行等待,当执行完成前一个的时候再执行下一个(这是tornado的优点也是缺点)
tornado 笔记的更多相关文章
- Tornado笔记
helloworld Tornado特点一句话简介:Tornado是非阻塞式的Web服务器,速度非常快,每秒可以处理数以千计的链接,因此Tornado是实时Web服务的一个理想框架.Tornado因为 ...
- tornado 学习笔记1 引言
从事软件开发这行业也快5年啦,其实从事的工作也不完全是软件开发,软件开发只是我工作中的一部分.其中包括课题研究.信息化方案设计.软件开发.信息系统监理.项目管理等工作,比较杂乱.开发的软件比较多,但是 ...
- Tornado学习笔记(一) helloword/多进程/启动参数
前言 当你觉得你过得很舒服的时候,你肯定没有在进步.所以我想学习新的东西,然后选择了Tornado.因为我觉得Tornado更匹配目前的我的综合素质. Tornado学习笔记系列主要参考<int ...
- tornado学习笔记19 Tornado框架分析
19.1 Http服务器请求处理流程图 (1) 调用HTTPServer的bind方法,绑定Socket的监听端口号: (2) 调用HTTPServer的listen方法,初始化一个listen so ...
- tornado学习笔记11 Web应用中模板(Template)使用应用实践
上一篇中(Web应用中模板的工作流程分析),已经分析了模板的渲染流程,以及相关参数获取及设置原理.这篇主要讲述模板在实际应用案例. 11.1 需求 根据用户输入的两次密码,判断两次密码是否一致,并将判 ...
- tornado 学习笔记15 _ServerRequestAdapter分析
继承于HTTPMessageDeletegate,是HTTPMessageDeletegate的一种实现,用于处理请求消息. 15.1 构造函数 def __init__(self, ser ...
- tornado 学习笔记9 Tornado web 框架---模板(template)功能分析
Tornado模板系统是将模板编译成Python代码. 最基本的使用方式: t = template.Template("<html>{{ myv ...
- tornado 学习笔记10 Web应用中模板(Template)的工作流程分析
第8,9节中,我们分析Tornado模板系统的语法.使用以及源代码中涉及到的相关类,而且对相关的源代码进行了分析.那么,在一个真正的Web应用程序中,模板到底是怎样使用?怎样被渲染? ...
- Tornado 学习笔记13 TCPServer
为了实现TCPServer的功能,定义一个类用于继承TCPServer并实现handle_stream方法.HttpServer就是一个很好的例子. 13.1 构造函数 def __init ...
随机推荐
- javascript性能优化之Dom编程性能调优总结
1.最小化的Dom访问,在一次Dom访问做尽可能多的操作: 2.使用局部变量存放指向反复访问的元素节点的Dom引用,原则上js代码中不应该重复获取同一个元素节点,除非它在运行过程中发生改变: 3.对元 ...
- python 爬虫数据准换时间格式
timeStamp = 1381419600 dateArray = datetime.datetime.utcfromtimestamp(timeStamp) otherStyleTime = da ...
- 获取Map的key和value的两种方法
//使用迭代器,获取key; /*Iterator<String> iter = map.keySet().iterator(); while(iter.hasNext()){ Strin ...
- 【leetcode】409. Longest Palindrome
problem 409. Longest Palindrome solution1: class Solution { public: int longestPalindrome(string s) ...
- tf.contrib.rnn.core_rnn_cell.BasicLSTMCell should be replaced by tf.contrib.rnn.BasicLSTMCell.
For Tensorflow 1.2 and Keras 2.0, the line tf.contrib.rnn.core_rnn_cell.BasicLSTMCell should be repl ...
- [LeetCode&Python] Problem 283. Move Zeroes
Given an array nums, write a function to move all 0's to the end of it while maintaining the relativ ...
- Gym 102091A: Flying Squirrel(RMQ)
题意:如图,有N个柱子,每次我可以从高柱子X到低柱子Y,而且需要满足中间的柱子都小于X的高度. 思路:现在有Q次询问,每次给定(X,Y),(如果ht[X]<ht[Y],则交换XY),问X为起点, ...
- resNet代码-小象/cv
C:\yyy\ml\dengsong\ChinaHadoop\ChinaHadoop_C4-master\ChinaHadoop_C4-master\C4_ResNet_TF http://blog. ...
- HPU第三次积分赛-D:Longest Increasing Subsequence(DP)
Longest Increasing Subsequence 描述 给出一组长度为n的序列,a1,a2,a3,a4...an, 求出这个序列长度为k的严格递增子序列的个数 输入 第一行输入T ...
- sudo操作
在非root权限下,无法执行 vim /etc/profile 并保存,提示如下错误: "profile" E212: Can't open file for writing Pr ...