回答了问题2016-09-13
不是用write 是用redirect
赞了回答2016-09-07
在网络IO,通常需要系统调用accept获取连接和read获取数据。并且由于IO比较耗时,所以这两个系统调用到返回用户代码就存在阻塞和非阻塞。下面以read调用为例:
关注了问题2016-09-07
提出了问题2016-09-06
关注了问题2016-08-28
关注了问题2016-08-28
关注了问题2016-08-22
回答了问题2016-08-01
说一个与本题无关的想法。验证码的话,可以用redis存起来,设置一个生存时间,只要时间一到,redis中,就会消失掉相应的值,提交的值,就去redis里面取就好了,因为redis是缓存数据库,速度会比sql快,然后,可以避免别人修改参数提交。加时间戳这个方式,个人认为不...
关注了问题2016-07-31
关注了问题2016-07-31
关注了问题2016-07-14
赞了回答2016-07-04
os.system 是 block 的 Tornado 的 block 是基于网络的异步 IO 要想异步,用 [链接]
赞了文章2016-06-19
Python 以其高性能脚本语言而著称,而 NGINX 则能够通过增加代码的实际执行速度来提供助力。对于单一服务器来说,如果网页的一半由静态文件组成(很多网页都有一半由静态文件组成),增加静态文件缓存可使这类网页性能翻倍,缓存动态应用程序内容能够进一步提升应用...
赞了回答2016-06-18
首先,你要理解什么是coroutine, 一般认为(xx)routine是一个轻量级的线程,比如golang是goroutine,有些更小众的语言甚至直接叫process比如erlang,但这里的进程、轻量级线程都是派生于操作系统之上的,也就是位于pthread之上的一个抽象概念。有的操作系统提供这种原...
回答了问题2016-06-16
我有一个很好的项目,就差一个程序员了
赞了文章2016-06-08
问:为什么 Tornado 在调用 self.finish() 以后不终止RequestHandler 中相关处理函数的运行?答:self.finish()代表回应生成的终结,并不代表着请求处理逻辑的终结。 同理还有 self.render/self.write 我们在所有这种 response 语句前加 return 例如:return self.re...
赞了文章2016-05-31
先说迭代器,对于string、list、dict、tuple等这类容器对象,使用for循环遍历是很方便的。在后台for语句对容器对象调用iter()函数,iter()是python的内置函数。iter()会返回一个定义了next()方法的迭代器对象,它在容器中逐个访问容器内元素,next()也是python的内置...
关注了问题2016-05-30
赞了文章2016-05-30
Tornado 4.3于2015年11月6日发布,该版本正式支持Python3.5的async/await关键字,并且用旧版本CPython编译Tornado同样可以使用这两个关键字,这无疑是一种进步。其次,这是最后一个支持Python2.6和Python3.2的版本了,在后续的版本了会移除对它们的兼容。现在网络上...
关注了问题2016-05-30