We're setting up a Python REST web application. Right now, we're using WSGI, but we might do some changes to that in the future (using Twisted, for example, to improve on scalability or some other feature). I would really like some help regarding what is considered a good architecture for a Web application in Python.
In general our app serves dynamic content, processes a moderate to high level of data from clients, performs pretty high-demand database, network and filesystem calls and should be "easily" scalable (quotes here because if a solution is great but somewhat tough to configure for scalability, it would definitely be thought of as good). We would probably like to evolve this into a highly parallel application in the mid-to-long term. Google App Engine is not an accepted suggestion, mainly because of its cost.
My question is this:
- Is using WSGI a good idea? Should we be looking into something like Twisted instead?
- Should we use Apache as a reverse proxy for our static files?
- Is there some different pattern or architecture that we should consider that I haven't mentioned? (Even if completely obvious).
Any help at all with this would be very appreciated. Thanks a lot!