With Zappa, each request is given its own virtual HTTP "server" by Amazon API Gateway. AWS handles the horizontal scaling automatically, so no requests ever time out. After your app returns, the "server" dies.
Horizontal scaling is handled automatically!
With Zappa, you only pay for server time you actually use, rather than 24/7/365. That can save you thousands of dollars!
With Zappa, you can deploy and update your code with a single command!
Zappa works with any WSGI app, so you don't need to modify your app code at all!
You're not tied to Zappa - if you want to leave, that's totally fine!
Zappa is Free Software!
Okay, so there still is a server - but it only has a 40 millisecond life cycle! Serverless in this case means "without any permanent infrastucture." With a traditional HTTP server, the server is online 24/7, processing requests one by one as they come in. If the queue of incoming requests grows too large, some requests will time out. With Zappa, each request is given its own virtual HTTP "server" by Amazon API Gateway. AWS handles the horizontal scaling automatically, so no requests ever time out. Each request then calls your application from a memory cache in AWS Lambda and returns the response via Python's WSGI interface. After your app returns, the "server" dies.
Zappa works with any WSGI-compatible that works with Python 2.7 and 3.6. That means - pretty much all of them! Django, Flask, Pyramid, Bottle, and many others all work with Zappa.
CGI is inefficient, certainly, but mainly because it blocks other requests on a single machine. Because Zappa is automatically distributed across n-many virtual instances, there's no blocking, and since the application is called from memory, the overhead is less than 20 milliseconds.