Uvicorn 0.30.0 Release
Today, we are releasing Uvicorn 0.30.0!
There were several changes here, including:
- Deprecate the
uvicorn.workers
module #2302 - Add a new multiprocess manager #2183
- Allow
ConfigParser
or aio.IO[Any]
onlog_config
#1976
Deprecate the uvicorn.workers
The uvicorn.workers
module is used to provide two classes: UvicornWorker
and UvicornH11Worker
.
These classes are used to run Uvicorn with Gunicorn e.g. gunicorn -k uvicorn.workers.UvicornWorker -w 4 main:app
.
Gunicorn is a popular WSGI server that can run multiple worker processes to handle incoming requests. When used with Uvicorn, Gunicorn would act as a process manager and Uvicorn would act as the server handling the requests.
However, this approach is not recommended anymore. In this release, we also introduced a new multiprocess manager on Uvicorn's side, that is meant to replace Gunicorn entirely.
For backward compatibility, you can install the Uvicorn Worker package:
Add a new multiprocess manager
A new multiprocess manager was added to Uvicorn. The main goal is to be able to have a proper process manager that can handle multiple workers and restart them when needed.
This was a long-awaited feature, and it's finally here!
Nothing needs to be done from the users side, the changes are already in place when using the --workers
parameter.
You can see more details on the the pull request #2183.
Allow ConfigParser
or a io.IO[Any]
on log_config
With this change, you can now pass a ConfigParser
programmatically to the log_config
parameter on the Uvicorn
class.