Responder is a web framework for Python. It is highly experimental and is not recommended for production use. I personally consider this project to be an academic exercise, and recommend reading through the code, however!
Responder pioneered several concepts that later appeared in FastAPI, including automatic async/await handling and type-aware response serialization. While it never reached production maturity, its ideas influenced the evolution of modern Python web frameworks.
I think it was a little ahead of its time. FastAPI is a more mature and production-ready alternative.
The Basic Idea
The primary concept here is to bring the niceties that are brought forth from both Flask and Falcon and unify them into a single framework, along with some new ideas I have. I also wanted to take some of the API primitives that are instilled in the Requests library and put them into a web framework. So, you'll find a lot of parallels here with Requests.
- Setting
resp.content
sends back bytes. - Setting
resp.text
sends back unicode, while setting resp.html sends back HTML. - Setting
resp.media
sends back JSON/YAML (.text
/.html
/.content
override this). - Case-insensitive
req.headers
dict (from Requests directly). resp.status_code
,req.method
,req.url
, and other familiar friends.- The
async
keyword is optional for route functions. You must useawait
within any route that is reading from the network.
Status
I wanted to reboot this project, but I think FastAPI is a better choice for most people. I recommend using that instead.
Honestly, I wrote this code in a month while I was taking perscription ADD meds, years ago, and I don't remember much about it. I recommend reading through the code, though!
This candid reflection illustrates the intersection of neurodiversity and creativity in software development. Kenneth's openness about ADHD medication's role in his coding productivity offers insight into how different minds approach intensive creative work.
The Code
https://github.com/kennethreitz/responder