I have an application running on AppEngine that uses about 50 CPU hours a day. Most of it is spent waiting for the datastore.
I am contemplating moving it off of AppEngine to something like Rackspace Cloud Servers because I think that my application can be more efficient if I can offload some of the work to the database (plus I can add more features that would be difficult to implement on AppEngine).
So, how would I go about moving an AppEngine app? It is developed with the webapp framework and does not use many Google APIs other than the datastore. Ideally I would be able to keep the webapp code and swap out the db classes for something that would talk to another database (MySQL or PostgreSQL is probably preferable to something like CouchDB or MongoDB, but those could work too).
UPDATE: In response to the comments below... I have run plenty of web applications before. I have not run production python apps before. I assume setting up the python / webserver aspect is fairly simple. My hope for going with something like Rackspace Cloud servers is that it will be 1 "server" that I can just add resources too as we grow. We are currently doing about 200k hits a day.
As for AppEngine optimizations, we are using memcache where we can (not many places). We are also using Tasks, and while that helps get around request timeouts, it adds to the resources used.
My primary question is a good python alternative for the data layer that might require the fewest code changes. Though I also know there are probably some relevant questions that I am not thinking to ask.