I have been playing around with an asynchronous web framework call FAPWS. Took me a while to stub my toe on this one but eventually I found it and have been very impressed with it so far. William the creator of FAPWS (which I am the first to say the project needs a name change) is a great guy has really taken all the feed back I have given him and responded as quickly as he could. He made the FAPWS server able to serve WSGI compliant application. So Pylons (as well as many other WSGI frameworks) can be driven async by FAPWS. First this illustrates the power of WSGI. Second koodos to William.
Template Performance
See the blazing speeds of FAPWS I had to find out how fast it really was. I am a huge template fan for web applications. Once you have template you will never go back. So I pull out my favorite template language (Genshi) and bench marked it. The code just displayed the unix time on a webpage. The first round with I think Python 2.4 and Genshi 0.3 was 765.10 request a second. Now with Python 2.5 and Genshi 0.4 I am getting 1209.19 request a second. None of this is officially really that useful because the apaches benchmarking tool 'ab' was running on my localhost along with the server and I wasn't doing all the things that I am supposed to do to make sure I had a true benchmark. This is blazing fast! In theory if I load balanced my laptop with something like lighty I would be able to do over 2K request a second!
Insane Performance
William has been emailing me about how fast he has gotten FAWPS to work and it may be close to the fastest web server out there. It is still in very early stages of development but I think this is going to be an awesome tool for high performance WSGI applications. As time goes on more backend frameworks like sqlalchemy will support async IO providing a faster over all system.
FAWPS + Pylons
I have been using Pylons lately because of its philosophy of WSGI compliance. Also it is a much simpler framework than Turbogears. If you have a large application I find it better to have a stripped down framework. If you are prototyping and need an application yesterday then I still think TG is the best to have something up and running in 5 minutes. Pylons being so simple can sit under FAWPS so far I have only seen 25% performance increases however there are a lot of integration optimizations I have not done yet. Right now I have a database retrieving some of the data so the bottleneck is the database queries. Once I add caching into the system then we should see a sharp increase in performance because there won't be as much IO blocking.
7 comments: