New Features
-
Control Interface (gunicornc): Add interactive control interface for managing
running Gunicorn instances, similar to birdc for BIRD routing daemon
(PR #3505)- Unix socket-based communication with JSON protocol
- Interactive mode with readline support and command history
- Commands:
show all/workers/dirty/config/stats/listeners - Worker management:
worker add/remove/kill,dirty add/remove - Server control:
reload,reopen,shutdown - New settings:
--control-socket,--control-socket-mode,--no-control-socket - New CLI tool:
gunicorncfor connecting to control socket - See Control Interface Guide for details
-
Dirty Stash: Add global shared state between workers via
dirty.stash
(PR #3503)- In-memory key-value store accessible by all workers
- Supports get, set, delete, clear, keys, and has operations
- Useful for sharing state like feature flags, rate limits, or cached data
-
Dirty Binary Protocol: Implement efficient binary protocol for dirty arbiter IPC
using TLV (Type-Length-Value) encoding
(PR #3500)- More efficient than JSON for binary data
- Supports all Python types: str, bytes, int, float, bool, None, list, dict
- Better performance for large payloads
-
Dirty TTIN/TTOU Signals: Add dynamic worker scaling for dirty arbiters
(PR #3504)- Send SIGTTIN to increase dirty workers
- Send SIGTTOU to decrease dirty workers
- Respects minimum worker constraints from app configurations
Changes
- ASGI Worker: Promoted from beta to stable
- Dirty Arbiters: Now marked as beta feature
Documentation
- Fix Markdown formatting in /configure documentation