Development Frustrations with Google App Engine

app_engine_logo_smFor the past two weeks I have been working on a project that has great potential of really taking off in a big way. I’m developing the site using Python and the Django framework running on Google App Engine. I have a lot of good things to say about working with this development stack. Some of the big wins are:

  • Python is an awesome language – easy to read, write, and maintain.  There’s lots of libraries available which makes development go faster.
  • Django is a great framework that makes developing webapps very clean.  There’s a great separation between templates, views, and urls.  Once I got the hang of how things are supposed to be done in django it’s very easy  to get things up quickly.
  • Google App Engine has a really amazing admin interface that gives access to the logging information, database tables, and website statistics.  The free quotas are generous, it scales well, and takes almost no time to set up.  The GUI development app for OS X works really well and does development debugging better than the stock django manage.py script.

But there have been some really frustrating points during the development of my first real web service running on GAE.

  • There are too many choices/variations of Django – none have great documentation
    • The built in Django that comes with GAE is stripped down to the bare essentials – no admin interface, different forms, different Models, different User/authentication.  Big portions of the documentation at djangoproject.org are useless if you use this version of Django.
    • app-engine-helper – provides a way to get more of the standard Django installed.  I haven’t tried this one.
    • app-engine-patch – similar to helper, but development seems more active.  app-engine-patch also includes a bunch of app-engine ready Django applications such as jQuery, blueprintCSS, and registration.  It supports using standard Django user accounts and the admin interface.

The biggest problem I’ve had is with user registration and authentication. Between the app-engine-patch and Google App Engine, there seems to be at least 4 different authentication and session schemes, and multiple User Models to choose from. Some require additional middleware – others don’t. I want to use the registration application and standard Django Users but it doesn’t seem to want to work with a Model’s UserProperty. To top it off there’s very little documentation and I haven’t found an example application to see how it should be done. Argh.

The exciting news is that I expect to have my first web service up and running in about a week. The second one is in development and I expect to launch it in early August.

Bookmark and Share

Technorati Tags: , , , , , , , , ,

Related posts:

  1. Reading and Writing Adwords Editor CSV files in Python
  2. Get Your ClickBank Transactions Into Sqlite With Python
  3. Scrape Technorati Search Results in Python
  4. Translating Text Using Google Translate and Python
  5. Python Web Crawler Script
Stumble it!


RSS feed | Trackback URI

1 Comment »

Comment by Spydre
2010-02-10 19:49:02

Yes you are exactly right – app engine is a great cloud gathering – but it falls on its face in the light of user auth and internationalization. Two objectives any serious cloud app needs to hurdle. AHOY! i hear a crowd of django inmates hurling facts that this is all pact in their framework – and Ahoy! i hear google accounts. But as you rightly say this is all extra payload and a lot of cross stitching and frilly knitting. App engine (python) simply needs its own simple auth based on the same framework as the google bundled offering. Again as you rightly say with the user property working and all the frills. This kind of functionality along with a decent sensible internationalization class would make app engine a dream to use.
Sadly these items are still off the list!

That said – what did you end up as a work-around – I feel im sailing waters you have already navigated.

Any help?

 
Name (required)
E-mail (required - never shown publicly)
URI
Subscribe to comments via email
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped=""> in your comment.



Additional comments powered by BackType