Posts on how WSGI applications and the servers which host them actually behave, as opposed to what the specification appears to say at first reading, are as follows.

Please note older posts may not reflect what I now regard as best practice, or may describe software which has since changed or been superseded.

This batch of posts deals with writing the application or middleware itself, and the obligations that come with the parts of the specification people skip over:

This batch of posts works through wsgi.file_wrapper, the optional server extension for serving a file efficiently, and what it takes to implement one correctly:

This batch of posts is about measuring what a real application is doing, from a wrapper around the application through to monitoring built into the server itself:

And on how the servers themselves differ, and why benchmarks of them mislead: