Google App Engine: To Django or to webapp?

Update: "Google App Engine: To Django or to webapp?" Revisited.

Google App Engine (GAE) supports both its own framework, called webapp, and Django.

So, which one do you use? As far as I can see, there isn't a compelling reason to use Django at the moment with GAE. I just can't see what benefits it offers over webapp and you have to hack Django to get it to work. In all honesty, it looks like Google was very influenced by Django and if you already know or work with Django, working with webapp is a piece of cake. All the concepts transfer over. Heck, it even supports Django templates. (I'm so glad I started playing with Django a couple of weeks back, it has made working with webapp and GAE and walk in the park!)

One of the main differences is that it doesn't support Django's (excellent) ORM. This isn't surprising, though, since Bigtable isn't a relational database and Google's own Datastore API is excellent. And you don't have to learn GQL. If you like the Django way of doing things with Model objects, you can keep working that way with the Datastore API. (Less importantly for state-maintaining Flash applications, but still crucially important for HTML-based apps, Django sessions are also not supported.)

It should be a huge vote of confidence and mind-share boost for the already-popular Django that Google's webapp framework is so similar to it. Google's support for Django is a clever move if for political reasons alone: instead of competing with (or, *shudder*, appearing to have forked) a popular open source framework, they appear inspired by and in full support of it. I can only assume that in time Google will add more Django features/support to webapp while continuing to support Django.

For my purposes, which include using PyAMF, Flash, and Flex with GAE, using webapp makes more sense to me at the moment. I've already outlined how I see Flash and Flex applications working on GAE in my previous post and it's cool to see that the PyAMF team agrees:

We need an approach that is closer to how PyAMF is implemented for Django, where we use the Google webapp WSGIApplication and map a gateway URL to PyAMF.

(Looking forward to the upcoming PyAMF 0.3 release with GAE support, Thijs -- exciting times!)

For more general reading on GAE, foobar has a thoughtful review of GAE advantages and possible disadvantages.

Comments