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 use await 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