If you’ve been using uWSGI as your Python web server, you’ll be interested in this prominent message at the top of the uWSGI project:
“Note: The project is in maintenance mode (only bug fixes and updates for new languages apis). Do not expect quick answers on GitHub issues and/or pull requests (sorry for that) A big thanks to all of the users and contributors since 2009.”
I stumbled across this when poking around GitHub in the Granian project. In there was a reference from OpenEdX with an issue entitled “We Must Replace Uwsgi With Something Else”. Having been an avid user of uWSGI, this caught my attention. Hence the note just above.
Replace it, but with what?
I think there are some excellent modern options to replace uWSGI. The good news is that it’s super fast and easy to do. Basically, change the start up command and the server you install (via uv pip install ...
) and you’re off to the races. After all, isn’t that the promise of WSGI and ASGI?
In this context, by “modern”, I mean two things: 1) It is actively supported and 2) it supports ASGI for async-based Python web apps (e.g. FastAPI).
- To me, reasonable options include:
- Granian (what we’re using across the board at Talk Python)
- uvicorn (now an option as a stand-alone production server)
- hypercorn
- gunicorn (potentially with uvicorn workers for async, pronounced “Gee Unicorn”)
And thanks
Thanks to the whole uWSGI team and contributors for 15 years of a great web server. It was a good run.