uwsgi+gevent+web.py的进阶

本文详细记录了在使用UWSGI和Web.py进行应用部署时遇到的几个关键问题及其解决方案,包括如何实现优雅重启、web.py本身的抓错机制、Web.py自身的无缝reload功能以及如何在特定情况下利用UWSGI的reload-exception机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前有关于这个构造的入门备忘,详情猛击[url=http://iyuan.iteye.com/blog/1415577]这里[/url]

目前的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()
才是王道啊~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值