Settings¶
Use the following options to configure Uvicorn, when running from the command line.
If you're running using programmatically, using uvicorn.run(...)
, then use
equivalent keyword arguments, eg. uvicorn.run("example:app", port=5000, reload=True, access_log=False)
.
Application¶
APP
- The ASGI application to run, in the format"<module>:<attribute>"
.--factory
- TreatAPP
as an application factory, i.e. a() -> <ASGI app>
callable.
Socket Binding¶
--host <str>
- Bind socket to this host. Use--host 0.0.0.0
to make the application available on your local network. IPv6 addresses are supported, for example:--host '::'
. Default: '127.0.0.1'.--port <int>
- Bind to a socket with this port. Default: 8000.--uds <str>
- Bind to a UNIX domain socket. Useful if you want to run Uvicorn behind a reverse proxy.--fd <int>
- Bind to socket from this file descriptor. Useful if you want to run Uvicorn within a process manager.
Development¶
--reload
- Enable auto-reload.--reload-dir <path>
- Specify which directories to watch for python file changes. May be used multiple times. If unused, then by default all directories in current directory will be watched.
Production¶
--workers <int>
- Use multiple worker processes. Defaults to the value of the$WEB_CONCURRENCY
environment variable.
Logging¶
--log-config <path>
- Logging configuration file. Options:dictConfig()
formats: .json, .yaml. Any other format will be processed withfileConfig()
. Set theformatters.default.use_colors
andformatters.access.use_colors
values to override the auto-detected behavior.- If you wish to use a YAML file for your logging config, you will need to include PyYAML as a dependency for your project or install uvicorn with the
[standard]
optional extras.
- If you wish to use a YAML file for your logging config, you will need to include PyYAML as a dependency for your project or install uvicorn with the
--log-level <str>
- Set the log level. Options: 'critical', 'error', 'warning', 'info', 'debug', 'trace'. Default: 'info'.--no-access-log
- Disable access log only, without changing log level.--use-colors / --no-use-colors
- Enable / disable colorized formatting of the log records, in case this is not set it will be auto-detected. This option is ignored if the--log-config
CLI option is used.
Implementation¶
--loop <str>
- Set the event loop implementation. The uvloop implementation provides greater performance, but is not compatible with Windows or PyPy. Options: 'auto', 'asyncio', 'uvloop'. Default: 'auto'.--http <str>
- Set the HTTP protocol implementation. The httptools implementation provides greater performance, but it not compatible with PyPy, and requires compilation on Windows. Options: 'auto', 'h11', 'httptools'. Default: 'auto'.--ws <str>
- Set the WebSockets protocol implementation. Either of thewebsockets
andwsproto
packages are supported. Use'none'
to deny all websocket requests. Options: 'auto', 'none', 'websockets', 'wsproto'. Default: 'auto'.--lifespan <str>
- Set the Lifespan protocol implementation. Options: 'auto', 'on', 'off'. Default: 'auto'.
Application Interface¶
--interface
- Select ASGI3, ASGI2, or WSGI as the application interface. Note that WSGI mode always disables WebSocket support, as it is not supported by the WSGI interface. Options: 'auto', 'asgi3', 'asgi2', 'wsgi'. Default: 'auto'.
HTTP¶
--root-path <str>
- Set the ASGIroot_path
for applications submounted below a given URL path.--proxy-headers
/--no-proxy-headers
- Enable/Disable X-Forwarded-Proto, X-Forwarded-For, X-Forwarded-Port to populate remote address info. Defaults to enabled, but is restricted to only trusting connecting IPs in theforwarded-allow-ips
configuration.--forwarded-allow-ips
Comma separated list of IPs to trust with proxy headers. Defaults to the $FORWARDED_ALLOW_IPS
environment variable if available, or '127.0.0.1'. A wildcard '*' means always trust.
HTTPS¶
--ssl-keyfile <path>
- SSL key file--ssl-keyfile-password <str>
- Password to decrypt the ssl key--ssl-certfile <path>
- SSL certificate file--ssl-version <int>
- SSL version to use (see stdlib ssl module's)--ssl-cert-reqs <int>
- Whether client certificate is required (see stdlib ssl module's)--ssl-ca-certs <str>
- CA certificates file--ssl-ciphers <str>
- Ciphers to use (see stdlib ssl module's)
Resource Limits¶
--limit-concurrency <int>
- Maximum number of concurrent connections or tasks to allow, before issuing HTTP 503 responses. Useful for ensuring known memory usage patterns even under over-resourced loads.--limit-max-requests <int>
- Maximum number of requests to service before terminating the process. Useful when running together with a process manager, for preventing memory leaks from impacting long-running processes.--backlog <int>
- Maximum number of connections to hold in backlog. Relevant for heavy incoming traffic. Default: 2048
Timeouts¶
--timeout-keep-alive <int>
- Close Keep-Alive connections if no new data is received within this timeout. Default: 5.