From 22bd00eab6dfa7145618ce6cd1acfdffea8bbe6e Mon Sep 17 00:00:00 2001 From: Marcelo Trylesinski Date: Sat, 29 Oct 2022 18:20:50 +0200 Subject: [PATCH 1/3] Replace 3.11-dev by 3.11 on the pipeline (#1724) --- .github/workflows/test-suite.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-suite.yml b/.github/workflows/test-suite.yml index 04c13b5fac..ff82ebdfba 100644 --- a/.github/workflows/test-suite.yml +++ b/.github/workflows/test-suite.yml @@ -13,7 +13,7 @@ jobs: runs-on: "${{ matrix.os }}" strategy: matrix: - python-version: ["3.7", "3.8", "3.9", "3.10", "3.11-dev"] + python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"] os: [windows-latest, ubuntu-latest, macos-latest] steps: - uses: "actions/checkout@v3" From 4634b7faebc24b5542b0132e43712558b37a3357 Mon Sep 17 00:00:00 2001 From: Upender Kalwa Date: Mon, 31 Oct 2022 02:10:32 -0500 Subject: [PATCH 2/3] Annotate CONFIG_KWARGS in UvicornWorker class (#1746) --- uvicorn/workers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uvicorn/workers.py b/uvicorn/workers.py index c7d16ff6ed..82b18e9000 100644 --- a/uvicorn/workers.py +++ b/uvicorn/workers.py @@ -2,7 +2,7 @@ import logging import signal import sys -from typing import Any +from typing import Any, Dict from gunicorn.arbiter import Arbiter from gunicorn.workers.base import Worker @@ -17,7 +17,7 @@ class UvicornWorker(Worker): rather than a WSGI callable. """ - CONFIG_KWARGS = {"loop": "auto", "http": "auto"} + CONFIG_KWARGS: Dict[str, Any] = {"loop": "auto", "http": "auto"} def __init__(self, *args: Any, **kwargs: Any) -> None: super(UvicornWorker, self).__init__(*args, **kwargs) From 26cace21c2d4edf7c43dea3fc59b39b39bcc6fad Mon Sep 17 00:00:00 2001 From: Marcelo Trylesinski Date: Mon, 31 Oct 2022 11:44:17 +0100 Subject: [PATCH 3/3] Warn user when reload and workers flag are used together (#1731) * Warn user when reload and workers flag are used together * Add test --- tests/test_config.py | 9 +++++++++ uvicorn/config.py | 3 +++ 2 files changed, 12 insertions(+) diff --git a/tests/test_config.py b/tests/test_config.py index 403112f2c7..d11c632e93 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -557,3 +557,12 @@ def test_config_use_subprocess(reload, workers, expected): config = Config(app=asgi_app, reload=reload, workers=workers) config.load() assert config.use_subprocess == expected + + +def test_warn_when_using_reload_and_workers(caplog: pytest.LogCaptureFixture) -> None: + Config(app=asgi_app, reload=True, workers=2) + assert len(caplog.records) == 1 + assert ( + '"workers" flag is ignored when reloading is enabled.' + in caplog.records[0].message + ) diff --git a/uvicorn/config.py b/uvicorn/config.py index df91a6c4d1..d2faf76fce 100644 --- a/uvicorn/config.py +++ b/uvicorn/config.py @@ -372,6 +372,9 @@ def __init__( else: self.forwarded_allow_ips = forwarded_allow_ips + if self.reload and self.workers > 1: + logger.warning('"workers" flag is ignored when reloading is enabled.') + @property def asgi_version(self) -> Literal["2.0", "3.0"]: mapping: Dict[str, Literal["2.0", "3.0"]] = {