Sohu 邮箱

大量使用了 web.py、Django 等 ...

↑我也要推荐

uwsgi + gevent + web.py 进阶

发布时间:2012-06-12 19:25:46, 关注:+6311, 赞美:+3, 不爽:+3

本文标签: uwsgi gevent

原始出处: 曹元的水果篮子

之前有关于这个构造的入门备忘,详情猛击这里 

目前的uwsgi稳定版已经升到1.2了 
gevent1.02b也已经相当的靠谱 
连web.py都有了些许升级 

基本上这个结构的搭建已经有了基础的保证。具体的demo见上面的入门链接。 
在本文中主要记录几个我个人遇到的问题。 

1.async的模式无法享受到uwsgi所谓的优雅重启的福利(reload). 
这点作者相当给力,只是在论坛中抱怨了一下,作者就在最新的1.3dev中给出了解决方案。。这两天得测下瞧瞧 

2.web.py本身的抓错机制还比较给力,以至于uwsgi中的reload-exception无用武之地了。这也是为了解决优雅重启的问题。通过特殊请求抛出错误达到自重启的目的。也是通过论坛中大牛的提醒(论坛牛人多啊~),基于base exception的错误还是可以穿透web.py抛给uwsgi的,比如:KeyboardInterrupt 

3.其实,web.py自身就可以无缝reload: 
 

#原代码:
application = web.application(urls, globals()).wsgifunc() 

#修改后:  
app = web.application(urls, globals())  
application = app.wsgifunc()  


就这么简单的一个拆分,直接就变成单次请求即重新加载(跟php差不多感觉了),当然了,单条请求的响应效率相对低了些,可咱要的是并发/灵活,整体上执行效率变更并不明显,而灵活的好处就足够吸引人了。 
不过from xxx import xx的句式是无法享受到这个重加载好处的。 
故而: 
import xxx 
xxx.xx() 
才是王道啊~~ 

如果你觉得本站对你有帮助,欢迎向本站赞助 :P

使用支付宝捐赠

Copyright© Python4cn(news, jobs) simple-is-better.com, 技术驱动:powered by web.py 空间主机:Webfaction

版权申明:文章转载已注明出处,如有疑问请来信咨询。本站为 python 语言推广公益网站,与 python 官方没有任何关系。

联系/投搞/留言: en.simple.is.better@gmail.com 向本站捐赠