原文在此:http://ziutek.github.com/web_bench/ 由于是早上看到 鱼哥,在推上的推荐,我实在忍不住……这是中午的草率之举,所以 鱼哥 对本文的翻译负全责。 PS:别说我工作状态不饱满,我在等丫的程序执行完…… ————翻译分割线———— Go 和 Python Web 服务器性能对比 我通常使用 Python 来构建 Web 应用。一年前,在兴趣的驱使下,我开始学习 Go。 在此期间,我重写了一些原本由 C 开发的 CGI 应用,包括运行于 chroot 环境下的同 thttpd 服务器一起的应用。我开始寻找可以开发易于 chroot、且内置 Web 服务器的独立 Web 应用的工具。那时,我开始玩 web.go 框架、mustache.go 模板、Go 原生 http 包和 GoMySQL 数据库 API。我发现,有 http、mustache.go GoMySQL 包的 Go 可以是我用来工作的不错的工具组合。因此,我决定使用 Go 编写我的应用。
Category Archives: Python
python 自身的协程实现?
本来,想给这个随笔起个更眩的名字:《跟随赖神学协程——之一》,原因嘛,自然是因为赖神的协程三篇之一(协程初接触)。不过,怕赖神k我,所以标题党还是朴素一点吧。 至于标题里的问号,是我有意加上去的。原因是在推上赖神认为“python 语言和标准库是不支持协程的(3.x部分支持)”,并且如果 python 自身支持协程,“stackless py 该有多么惭愧啊, :)”(stackless python 的协程详情请看这里)。但是因为 PEP 0342 的描述,令我很迷惑。python 自身是否可以实现协程,这个值得商榷。我不确定,保守点好,给自己个后路走。加个问号吧……如果这不算协程,大家就当我实现了“伪协程”吧。嘿嘿……
Twisted 的 MemcacheProtocol 使用
Twisted 的 defer 是个强大但是诡异的东西,遗憾的是,除了官方文档和这些文档的翻译,其他资料不多。而基于 defer 的客户端协议实现资料就更少了。Memcache 的协议实现也是利用 defer,但是除了一个单元测试的代码外,很难看到其他可以参考的实现。搞了几天,总算是有一个简单的封装,可以避开 defer,无须让所有参与开发的技术人员一定要弄懂 defer 才能用 MemCacheProtocol。 上代码吧,这样封装,应该是比较好理解的……
Netbeans Python 调试,郁闷的包导入问题
这几天在帮忙开发一个 python 项目。使用 netbeans 的时候,遇到一个诡异的问题。 如果使用“运行”来跑项目,一切正常。而如果使用“调试”来跑项目,当执行到 import 第三方的库的时候,就会产生“ImportError: No module named xxxx”。郁闷不已,上网查了半天,没找到可用的信息。 毛主席教育我们“自己动手,丰衣足食”。于是就祭出“观察、归纳和总结”的科学的研究方法,对这个灵异现象进行了一番探索。
脚本语言的配置文件
关于配置文件,在 PHP 的 Zend Framework 中我做过一些简单的关于性能的测试:http://www.mikespook.com/index.php/archives/36。将 ninnypro 的配置文件从 ini 修改为 xml ,并且声称能提高传说中的性能。 最近被调到另外一个在用 python 的组帮忙,阅读了他们的实现服务器端的 python 代码之,配置文件近二十余个,全是 xml 文件。为了使用着些配置文件,从 XMLFile 继承,实现了二十余个 Config 类。 这看起来似乎没什么问题。
Django 1.0.2 mod_python 方式报 TypeError 的解决方法
尝试用 Django 写了一个简单的企业站,部署过程中出了不少问题,不过还好都一一解决了。 “激动不已”的看到了首页,长出一口气:“总不会再出什么其他问题了吧!”随手点了一个内部链接: ————————————————— TypeError at about ‘NoneType’ object is not iterable ————————————————— 这回可晕倒了,怎么会有这样一个错误? 接着往下看,发现错误是由于丢失了一个反斜线引起的: Request Method: GET Request URL: http://www.i-fang.comabout Exception Type: TypeError Exception Value: ‘NoneType’ object is not iterable Exception Location: /usr/lib/python2.5/site-packages/django/core/handlers/base.py in get_response, line 77 Python Executable: /usr/bin/python Python Version: 2.5.2 Python Path: [‘/home/www/www.i-fang.com/’, ‘/usr/lib/python25.zip’, ‘/usr/lib/python2.5’, ‘/usr/lib/python2.5/plat-linux2’, ‘/usr/lib/python2.5/lib-tk’, ‘/usr/lib/python2.5/lib-dynload’, ‘/usr/local/lib/python2.5/site-packages’, ‘/usr/lib/python2.5/site-packages’, …
Continue reading “Django 1.0.2 mod_python 方式报 TypeError 的解决方法”
TurboGears 学习笔记-控制器
这部分内容虽然不多,但是看了好多天。 在 tgadmin 自动生成的 appname/appname/controller.py 中有如下代码: 1 import turbogears as tg 2 from turbogears import controllers, expose, flash 3 from cherrypy import request 4 # from sandbox import model 5 # import logging 6 # log = logging.getLogger(“sandbox.controllers”) 7 8 class Root(controllers.RootController): 9 @expose(template=“sandbox.templates.welcome“) 10 def index(self): 11 import time 12 # log.debug(“Happy TurboGears Controller …
TurboGears 学习笔记-安装
Zope3 很强大,但是一直徘徊在 python 2.4 不升级。学习的兴趣骤减。Django 版本一直停滞在 0.96 不前。据说 12 月会出 1.0,但是兼容性似乎不能保障。偶然的机会看到一篇 TurboGears 的文章,似乎停简单。于是乎,先学安装。 TurboGears 的安装已经简单到了及至:easy_install turbogears。 在 ubuntu 下使用 easy_install 这个命令需要安装 python-setuptools 这个包。 在终端中执行 tg-admin 这个命令,一切正常,除了会有一个警告:UserWarning: Your installation of Python doesn’t have a profile module.原来还需要安装 python-profiler 这个包,使用 apt-get 安装之后,这个警告就不会再出现了。 使用 tg-admin quickstart 生成一个项目,比如 sandbox。进入自动生成的 sandbox 目录,执行命令 ./start-sandbox.py 一切 OK,只要 8080 端口没有被占用,TurboGears 就正常启动了。 在开发模式下,如果需要修改 8080 端口,找到 …