What's Changed
New features
Changes
- BREAKING prioritize request's scope over OS env when building WSGI environ dict (#879 by @Barsoomx)
- This means conflicting keys won't override WSGI request data anymore
- BREAKING TCP handshake errors are now logged under
debugseverity - Add Python 3.15 support
- Drop free-threaded Python 3.13 support
- Bump PyO3 to 0.29 (#820 by @tobiasge)
- Bump dependencies
Enhancements
- BREAKING Refactor socket sharing on Linux
- Granian on Linux now requires kernel >= 5.14 and
net.ipv4.tcp_migrate_reqsysctl option enabled when using multiple workers and respawn features
- Granian on Linux now requires kernel >= 5.14 and
- BREAKING Implement (non-configurable) backpressure over streamed/iterable responses in ASGI and WSGI protocols
- This trades a bit of throughput (mostly unnoticeable) for lower memory usage
- Refactor workers main loop and shutdown process
Fixes
- Fix several bugs on shutdown process (thanks @Malkiz223)
- Fix a shared socket bug on free-threaded Python causing crashes on workers respawn