I wrote a little gadget for Erica a few months ago that automates a daily photography contest she runs on her Photography Beginners Flickr group. It's pretty rudimentary stuff; a database of contest themes and publication dates (past and future), and a nightly job that logs into Flickr (nee Yahoo!) and posts the contest, along with sending an email containing a link to the contest over to the companion mailing list (it also automatically reschedules contests, so it can run on autopilot for the most part). Pretty simple stuff, although automating the Yahoo login process was a little annoying. (Flickr's proper API is quite good, but they've intentionally avoided exposing almost anything related to their discussion groups; presumably spam is the concern, but it boggles the mind as to why a group owner isn't allowed to post and do basic discussion parsing.) Thank goodness for Beautiful Soup.
Anyway, I whipped it up as a quick Django app, since the auto-admin did pretty much everything she'd need for creating and scheduling contests. Meanwhile, she's been moving more and more stuff to her Google Apps account; her web hosting is mostly there now, and she's been using it for her email for as far back as I can remember. So, when Google opened up AppEngine for Apps owners, I jumped in and created a placeholder app for her, with every intention of giving Django on GAE a try.
Well, that was back when urllib2 wasn't supported, and the version of Django shipped with the SDK is still only 0.9.6. But, both of those problems were fixed recently; urllib and urllib2 are both supported in the SDK now, and app-engine-patch gets you most of the way to a workable Django 1.0 installation, with one big exception: it uses the GAE SDK's model interface instead of Django's, which makes porting a somewhat interesting experience. I also didn't realize that enforcement of unique values wasn't something GAE's data backend supported until I was hip-deep in porting it, but that proved to be a problem I was able to work around.
At the end of the day, the port was actually pretty simple: grep for any use of .objects() and replace it with .all(), replace .filter(pub_date=x) with .filter("pub_date =", x), and rewrite the models to use GAE's properties instead, and by and large the whole thing works. I'm having a problem with cookie persistence with cookielib, but aside from that, everything appears to work. I'm also quite impressed with how easy it was to get up and running with a development AppEngine instance locally, and how well pushing updates seems to work. app-engine-patch makes it feel a lot like native Django development (via manage.py) which, while it seems like a small thing, made the process a lot more comfortable.
Anyway, I'm still iffy on whether I'd use this conglomeration of tools for something more important, but for her contest system, it seems like a fine option. The fact that most of my stuff is still primarily Django is a big deal; if GAE goes completely commercial, or disappears for some reason, I'm not stuck with an app written for an SDK with no real use.