381chan.org
I haven’t blogged anything in a while. However, I think it was worth it. During the past 16 days, I’ve been working on a project aimed predominantly for the Serbian Internet users. It’s an anonymous message board system called AnonyBBS. It’s currently deployed on test.381chan.org where early adopters are testing it.
Web Application Caching 101
While load-testing 381chan.org, I discovered that despite the super-fast bjoern WSGI server, and capable nginx frontend, the site had roughly 50% failed request during a 1k-request test with concurrency level of 300. It turns out that the database is the bottleneck, and that this bottleneck is solved quite easily with caching.
GAE Bottle Login Handler
While I have my own home-brewed auth system for Herd Hound, there are a couple of situations where I needed to authenticate using Google account. In particular, those are some built-in functionalities like datastore admin, or mapreduce. These things have a built-in interface and they need a way to authenticate users, so they call on the default login handler located at /_ah/login_required. There are many ways to write login handlers (I wouldn’t be surprised if one was included in the SDK, but I didn’t bother to look), and I’ll show you how to do it using the bottle framework.
Appstats and Bottle on GAE
Google app engine apps are fairly easy to profile, thanks to the Appstats library. I’ll show you here how to configure the Appstats for use with your bottle app here.




