前言:

   话说文章转自我的51cto博客里的,xiaorui.cc !

   前两天有人问我tornado到c10,先声明下,我也不知道tornado官方是咋测试的,我自己是没到那种牛逼的抗链接能力,不然咋说,该优化还是优化,EFI要这么较真,可以试着用nginx来处理tornado不太擅长的静态文件及用多app方案来提高负载均衡的能力。


   我人比较的懒,把接口和平台的页面都做成一个py了,用upstream不好做负载,如果你用ip_hash,或者insert cookie的方式,虽然保证了针对后端服务器的命中,但是哥还就不想命中。

   我还就想rr轮训,为啥? 因为页面上大量的耗时间的io和计算请求,这个时候我总是命中调度到一台服务器,那我就会一直的等待,后面还有一堆的任务也都在同步堵塞着。。。太痛快啦,这个时候就需要rr轮训,session如何的一致性,这个时候就需要一个快速的存储来保证session cookie的存储。

   以前更多是用tornado memcached来存储session或者cookie,因为报警平台中已经在用redis、mongodb这些nosql数据库,没必要再配置memcached了。 这次用我钟爱的redis了。


这里导入了相关的类和库,login_required是装饰器,专门来判断用户登录了没有,没有的话把访问扔给login.html页面。



关联的两个类:

处理session的主要文件

这个文章的原文是在 http://blog.xiaorui.cc ,我的文章总是被爬来爬去的。

tornado每个控制器相关的class ~

对于登录注册session:

对于退出登录:

其实就改成None就行了,匹配都在装饰器那边搞好了。

偶了,这就可以了。用之前要配置下相关的组件!
pip install ujson redis
pip install tornado

session.py 代码来自:

git clone https://github.com/zs1621/tornado-redis-session

这老外写的有点简陋,说明几乎没有,还好tornado redis session本身就是不难的东西,看看就能搞定。

单个tornado我现在已经可以顶到1500个长连接不崩溃了,如果加上ngixn做tornado的分发负载,估计连接在6k问题不大。




对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!

源码分析tornado gen.sleep非阻塞

前言:       前两天去菲律宾长滩岛度假去了,有段时间没有更新技术文章了。简单说说度假期间发生的事情吧,可能因为心情和身体不理想,...

阅读全文