因为学习 Ajax, 需要使用web server,因此就使用起Karrigell。不是为它做广告,的确是非常方便的一个web framework。做些东西太方便了,就象随手写一个小的 Python 程序一样,非常容易地可以体验web开发。我这个有一个毛病,觉得什么东西好就喜欢向别人推销,就象我向我的同事推销 Python 一但,不过他们是坚决的反对,没有一个心动。不过我也无所谓,你不学我照样学,在网上不是还有许多的同好可以交流嘛。我想他们不想学也是有理由的,编程是件痛苦的事情,如果你无法投入,你基本上就编不了程序了。许多人架构理论一堆,让他编个程序实现一下子就不行了。但一个精通编程的人却依然可以提出架构理论来。只不过现在这个世道,如果你是一个程序员,那好,我提出架构你去实现就行了。至于你提出的什么架构,对不起,我可没功夫与你交流,因此你也别向我提。当然事情未必就是这么极端,绝大多数情况是,做架构理论的人基本上不会征求程序员对架构的看法。我感觉是这样的,因此上别人不找我我也绝对不发表什么意见。真是有些道不同不相为谋。我怎么就这样了呢?是被谁逼的呢?
呵呵,以上的话是从做广告想到的,无聊的东西。
那么关于 Karrigell 有什么事情我想说得呢。一个就是关于 Karrigell 与 Apache的结合的问题。在我以前的Blog中曾经写到 Karrigell 可以通过mod_python与Apache紧密结合,但后来有人说文档中根本没看到。于是我仔细查了不同版本的 Karrigell 的文档,然后又在它的maillist中提问最后明白是这样的:
在2.1.2的文档还是通过mod_python与Apache相结合,但在最新的2.1.5版本已经变成了使用反向代理的方法,与CherryPy, Snakelets所使用的方法一样。为什么会这样,这是作者(Pierre Quentel)的回答:
There was a problem with mod_python. It worked fine on Windows, but on
Linux, Apache works on a multi-process mode, creating different
instances of the Python interpreter. For the scripts that use sessions,
since Karrigell stores them in memory, if a request is handled in a
different process than the previous ones by the same user-agent, the
session object can’t be found
I tried to fix that with persistent sessions but couldn’t come to a good
solution. So I finally decided to drop the mod_python integration and
recommand to configure Apache as a proxy to the built-in server in
Karrigell. This is the approach of many other Python web frameworks
(Snakelets and WebWare for instance)
If you have a Windows machine you can still use mod_python as described
in version 2.1.2, with ApacheHandler
可以看到是由于Apache多进程的问题造成的,由于 Karrigell 的session的管理是在内存中,在多进程的情况下不好处理,他正在解决这个问题。因此目前建议是使用反向代理。但在windows下还是可以继续按2.1.2中的说明进行配置,使用mod_python。我试了的确也是可以的(因为我就是在windows下试的),不过好象有问题。不过关于这个问题的答案已经知道了,下面要看作者是如可解决它。
另一件关于 Karrigell 的事就是作者开始提议也开发一个Blog系统,我是很支持的。我想开发Blog系统并不是为了跟风,而是增加在 Karrigell 上的应用,同时可以很好的宣传 Karrigell,如果在这个过程中又可以学到东西不是非常好的一件事情吗。我要继续关注此事。也希望有兴趣地朋友也一起来关注此事。


