Which Python framework is best for web development in Google App Engine?
webapp is the framework which is bundled with google app engine. The webapp framework is already installed in the app engine environment and in the SDK, so you do not need to bundle it with your application code to use it.
Besides webapp, app engine environment also supports Django, Pylons and web.py
If you are looking for a full stack framework Django is probably what you are looking for. Here [1] you can find an article about Running Django on Google App Engine.
[1] http://code.google.com/appengine/articles/django.htmlSome addon:
Light framework comparisons for Bottle, Flask, tipfy, webapp, web.py:
http://www.untilnil.com/2010/08/appenginetemplate4/
tipfy? http://www.tipfy.org/
tipfy is a small but powerful framework made specifically for Google App Engine. It is a lot like webapp:
from tipfy import RequestHandler, Response
class HelloWorldHandler(RequestHandler):
def get(self):
return Response('Hello, World!')
...but offers a bunch of features and goodies that webapp misses: i18n, sessions, own authentication, flash messages and more. Everything in a modular, lightweight way, tuned for App Engine. You use only what you need, when you need.
I would suggest
webpy
[1], it's simple and powerful;
here
[2] you can find a tiny review.
I've developed
StackPrinter
[3] and
GAEcupboard
[4] with web.py on top of Google App Engine.
Source code
here
[5].
As has been said, Django is already there, but WebOb [1] is also available there. You can build your own framework upon that (see the tutorial [2]).
[1] http://pythonpaste.org/webob/Web2py is my choice just because of ease of migration and ease of deployment and testing/development on.
I can recommend Django too. It has nice support by Google and community. Lots of examples and internal power of framework itself can save much time on coding.
I would suggest Django [1] as a good Python framework. There are some articles [2] on Google which describe how you can use it with Google App Engine.
It's already included in App Engine, so all you need to do is import the Django modules as normal.
[1] http://www.djangoproject.com/I built an app engine site using Django and found a few hidden problems. One is that to get the benefits of Django (admin area, orm integration) you need to use a patch. I chose the app-engine-patch which worked great for local dev however on production had a 10 second start up delay on each page view after the site had been idle for about a minute. Then the developers of the patch abandoned it. They've moved their work to django-nonrel which has lofty goals but, according to django-con EU will not be part of the official django in the same way the built in ORM is. So basically, a django app for app engine is going to be different than a normal django app.
Instead I recommend web2py or App Engine Oil. web2py has a special, officially supported by the devs, mode that enables compatibility with App Engine. It turns off a few features of web2py. Your app is portable to any hosting service though. Oil is a Rails like framework built just for app engine.
Like CodeSlayer said, google app engine have bundle some frameworks. but if you want to use it with others you can read this article
Running Django on Google App Engine
[1]
And if you need some IDE, these tutorials may help
Configuring Eclipse on Windows to Use With Google App Engine
[2]
Using Komodo Edit as an IDE for Google App Engine
[3]
There is one important thing to consider before making a decision: are you sure, you always ever want to stay with appengine with your project? If your project grows and grows and at one point you will realize that it is too late to rewrite [1] your project - but exactly then you also realize, that for some reason you want your project to run of your own servers, maybe because you do a wikileaks clone or anything else that you want to be sure google can not shut down because it does not fit their terms - what do you do then? So it seems to be wise to select a framework that does not work only on appenginge, so you do not close the door behind you forever :)
[1] http://www.joelonsoftware.com/articles/fog0000000069.htmlI used Bottle Python with GAE. Its extremely small (71 KB only!) and quite sufficient to run small to mid sized apps. You can learn to use Bottle with GAE from here [1]. I found it very easy to get along with and no fuss of a lot of config and edits!
[1] http://blog.rutwick.com/use-bottle-python-framework-with-google-app-enginewebapp2 [1], which is basically a superset of webapp with some great additions and tweaks.
A big advantage of webapp2 is that you can use existing (and probably future) SDK libraries without adaptation. Many App Engine services (blobstore, mail handler, deferred etc) use handlers made for webapp. With webapp2 you get all those handlers working out of the box with extra benefits: webapp2 is a lot easier to extend and includes the most glaring webapp missing features.
Also, you can use all the examples from the App Engine documentation with it, since it is made to be compatible with webapp. And later you learn the new, extended features.
[1] http://webapp-improved.appspot.com/We picked Tornado [1] because it is lightweight and fast, especially on cold start, which is an app engine issue for low-traffic apps. It's even faster than webapp (!) because webapp loads the Django templating system.
We've been happy with Tornado, although it doesn't have as much support for some stuff (e.g., web forms). It does have a templating language which is just embedded python. I like having the power to have a reasonable "if" statement or "for" loop, even though most people believe that embedding complex logic in templates will produce spaghetti.
[1] http://www.tornadoweb.org/documentation#wsgi-and-google-appengineBottle or Itty, with jinja2 as the templating language -> Basically sinatrarb for python.
I really like Google AppEngine Oil. Unfortunatelly the project seems to have come to a halt? But I've used 3.0 in a couple of projects to great success. (I am a TurboGears fan initially.)
http://code.google.com/p/google-app-engine-oil/
I want to know how to run the CherryPy web server in the Google App Engine [1], because I like it best, plus I want to know how to integrate the StringTemplate engine into the CherryPy web server [2] so that I can use it there, too.
I have used CherryPy stand-alone and with TurboGears.
[1] http://stackoverflow.com/questions/379352/how-to-run-the-cherrypy-web-server-in-the-google-app-engineIsn't Django recommended by Guido, which is now a Google employee?