views:

4849

answers:

12

Looking to do a very small, quick 'n dirty side project. I like the fact that the Google App Engine is running on Python with Django built right in - gives me an excuse to try that platform... but my question is this:

Has anyone made use of the app engine for anything other than a toy problem? I see some good example apps out there, so I would assume this is good enough for the real deal, but wanted to get some feedback.

Any other success/failure notes would be great.

+3  A: 

Take a look the the sql game, it is very stable and actually pushed traffic limits at one point so that it was getting throttled by Google. I have seen nothing but good news about App Engine, other than hosting you app on servers someone else controls completely.

Joe Skora
sql game has moved from Google App Engine to a private server.
systempuntoout
+10  A: 

The "App Engine running Django" idea is a bit misleading. App Engine replaces the entire Django model layer so be prepared to spend some time getting acclimated with App Engine's datastore which requires a different way of modeling and thinking about data.

thaiyoshi
Good point - it seems that it by default takes up Django's templating, but not necessarily the rest of it.
agartzke
+32  A: 

I have tried app engine for my small quake watch application http://quakewatch.appspot.com/

My purpose was to see the capabilities of app engine, so here are the main points:

  1. it doesn't come by default with django, it has its own web framework which is pythonic has URL dispatcher like django and it uses django templates So if you have django exp. you will find it easy to use
    • But you can use any pure python framework and django can be easily added see http://code.google.com/appengine/articles/django.html google-app-engine-django (http://code.google.com/p/google-app-engine-django/) project is excellent and works almost like working on a django project
  2. You can not execute any long running process on server, what you do is reply to request and which should be quick otherwise appengine will kill it So if your app needs lots of backend processing appengine is not the best way otherwise you will have to do processing on a server of your own
  3. My quakewatch app has a subscription feature, it means I had to email latest quakes as they happend, but I can not run a background process in app engine to monitor new quakes solution here is to use a third part service like pingablity.com which can connect to one of your page and which executes the subscription emailer but here also you will have to take care that you don't spend much time here or break task into several pieces
  4. It provides Django like modeling capabilities but backend is totally different but for a new project it should not matter.

But overall I think it is excellent for creating apps which do not need lot of background processing.

Edit: Now task queues can be used for running batch processing or scheduled tasks

Edit: after working/creating a real application on GAE for a year, now my opnion is that unless you are making a application which needs to scale to million and million of users, don't use GAE. Maintaining and doing trivial tasks in GAE is a headache due to distributed nature, to avoid deadline exceeded errors, count entities or do complex queries requires complex code, so small complex application should stick to LAMP.

Anurag Uniyal
Now batch process can be run on GAE
Anurag Uniyal
Check out the new Task Queue Python API too in the App-Engine docs.
Jason Rikard
Much of this information is outdated - Django 0.96 is now built into GAE as of July 17 2009.
amdfan
Djanjo 1.0.x is also included into GAE now. You can pick which revision of Django you want.
Laurent
Just another update, Django 1.1 is now available with GAE as well as past versions.
TokenMacGuy
Another update: you don't have to fudge your Django classes into GAE any more using the Helper or the Patch. The [django-nonrel](http://allbuttonspressed.com) patches Django to run on top of any nonrelational store, including GAE. This means that you can run your Django app directly on top of GAE without any model modification.
wescpy
+17  A: 

One of the compelling reasons I have come across for using Google App Engine is its integration with Google Apps for your domain. Essentially it allows you to create custom, managed web applications that are restricted to the (controlled) logins of your domain.

Most of my experience with this code was building a simple time/task tracking application. The template engine was simple and yet made a multi-page application very approachable. The login/user awareness api is similarly useful. I was able to make a public page/private page paradigm without too much issue. (a user would log in to see the private pages. An anonymous user was only shown the public page.)

I was just getting into the datastore portion of the project when I got pulled away for "real work".

I was able to accomplish a lot (it still is not done yet) in a very little amount of time. Since I had never used Python before, this was particularly pleasant (both because it was a new language for me, and also because the development was still fast despite the new language). I ran into very little that led me to believe that I wouldn't be able to accomplish my task. Instead I have a fairly positive impression of the functionality and features.

That is my experience with it. Perhaps it doesn't represent more than an unfinished toy project, but it does represent an informed trial of the platform, and I hope that helps.

ee
Almost identical to my situation - an aside from "real work" but still something that I need to do and have functional at the end.
agartzke
Same here. Also, big plus is that the development environment installation is a snap (you're coding within a minute). Same thing for deployments.
Jilles
+5  A: 

I used GAE to build http://www.muspy.com

It's a bit more than a toy project but not overly complex either. I still depend on a few issues to be addressed by Google, but overall developing the website was an enjoyable experience.

If you don't want to deal with hosting issues, server administration, etc, I can definitely recommend it. Especially if you already know Python and Django.

Alexander Kojevnikov
+6  A: 

I think App Engine is pretty cool for small projects at this point. There's a lot to be said for never having to worry about hosting. The API also pushes you in the direction of building scalable apps, which is good practice.

  • app-engine-patch is a good layer between Django and App Engine, enabling the use of the auth app and more.
  • Google have promised an SLA and pricing model by the end of 2008.
  • Requests must complete in 10 seconds, sub-requests to web services required to complete in 5 seconds. This forces you to design a fast, lightweight application, off-loading serious processing to other platforms (e.g. a hosted service or an EC2 instance).
  • More languages are coming soon! Google won't say which though :-). My money's on Java next.
Ben Godfrey
as of february 2009 many of the above limitations been easened.
husayt
If somebody can edit this answer, it'd be nice to reflect that Java is indeed the next language available.
jhs
@jhs Your comment does that nicely!
Ben Godfrey
+13  A: 

there is a fully working reddit clone with source code and we are using to build the registration software for PyCon 2009 (beta).

massimo
+17  A: 

I am using GAE to host several high-traffic applications. Like on the order of 50-100 req/sec. It is great, I can't recommend it enough.

My previous experience with web development was with Ruby (Rails/Merb). Learning Python was easy. I didn't mess with Django or Pylons or any other framework, just started from the GAE examples and built what I needed out of the basic webapp libraries that are provided.

If you're used to the flexibility of SQL the datastore can take some getting used to. Nothing too traumatic! The biggest adjustment is moving away from JOINs. You have to shed the idea that normalizing is crucial.

Ben

mainsocial
+3  A: 

I used GAE and Django to build a Facebook application. I used http://code.google.com/p/app-engine-patch as my starting point as it has Django 1.1 support. I didn't try to use any of the manage.py commands because I assumed they wouldn't work, but I didn't even look into it. The application had three models and also used pyfacebook, but that was the extent of the complexity. I'm in the process of building a much more complicated application which I'm starting to blog about on http://brianyamabe.com.

byamabe
I started to use manage.py to run the server and also to run some the unit tests. Running the server works fine, but as my application runs as a Facebook app it isn't all that useful (I need a hosted server that Facebook references). Unit testing also worked and it even worked with fixtures. However, I wasn't able to get fixtures that referenced other models to work. I still haven't figured out if it is a problem with my fixture or an issue with app-engine-patch.
byamabe
+4  A: 

I used GAE to build a simple application which accepts some parameters, formats and send email. It was extremely simple and fast. I also made some performance benchmarks on the GAE datastore and memcache services (http://dbaspects.blogspot.com/2010/01/memcache-vs-datastore-on-google-app.html ). It is not that fast. My opinion is that GAE is serious platform which enforce certain methodology. I think it will evolve to the truly scalable platform, where bad practices simply not allowed.

David Gruzman
+4  A: 

I used GAE for my flash gaming site, Bearded Games. GAE is a great platform. I used Django templates which are so much easier than the old days of PHP. It comes with a great admin panel, and gives you really good logs. The datastore is different than a database like MySQL, but it's much easier to work with. Building the site was easy and straightforward and they have lots of helpful advice on the site.

Josh Patton
+5  A: 

This question has been fully answered. Which is good. But one thing perhaps is worth mentioning. The google app engine has a plugin for the eclipse ide which is a joy to work with.

If you already do your development with eclipse you are going to be so happy about that.

To deploy on the google app engine's web site all I need to do is click one little button - with the airplane logo - super.

vfix
yeah, I had used that. Very nice indeed.
agartzke