From 2c670cccf96e578ef9072743a3b0c60d9dec9e21 Mon Sep 17 00:00:00 2001 From: smitchell6879 <22923016+smitchell6879@users.noreply.github.com> Date: Wed, 6 Apr 2022 06:18:00 -0400 Subject: [PATCH 1/4] Fix OSError --- uvicorn/loops/asyncio.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/uvicorn/loops/asyncio.py b/uvicorn/loops/asyncio.py index 9a9ed6495..56ca35451 100644 --- a/uvicorn/loops/asyncio.py +++ b/uvicorn/loops/asyncio.py @@ -6,6 +6,7 @@ def asyncio_setup(reload: bool = False) -> None: # pragma: no cover - if sys.version_info >= (3, 8) and sys.platform == "win32" and reload: - logger.warning("The --reload flag should not be used in production on Windows.") + if sys.version_info >= (3, 8) and sys.platform == "win32": + if reload: + logger.warning("The --reload flag should not be used in production on Windows.") asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) From 105d12d1524ee8519360686cf8735bd997948155 Mon Sep 17 00:00:00 2001 From: smitchell6879 <22923016+smitchell6879@users.noreply.github.com> Date: Wed, 6 Apr 2022 20:33:06 -0400 Subject: [PATCH 2/4] Fixed Flake8 Errors --- uvicorn/loops/asyncio.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/uvicorn/loops/asyncio.py b/uvicorn/loops/asyncio.py index 56ca35451..5f0126465 100644 --- a/uvicorn/loops/asyncio.py +++ b/uvicorn/loops/asyncio.py @@ -8,5 +8,6 @@ def asyncio_setup(reload: bool = False) -> None: # pragma: no cover if sys.version_info >= (3, 8) and sys.platform == "win32": if reload: - logger.warning("The --reload flag should not be used in production on Windows.") + logger.warning("The --reload flag should not be \ + used in production on Windows.") asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) From e934dfec885fb1dff85d2c253e254a62562a21a4 Mon Sep 17 00:00:00 2001 From: smitchell6879 <22923016+smitchell6879@users.noreply.github.com> Date: Wed, 6 Apr 2022 20:54:30 -0400 Subject: [PATCH 3/4] ran lint script --- uvicorn/loops/asyncio.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/uvicorn/loops/asyncio.py b/uvicorn/loops/asyncio.py index 5f0126465..5c14ca4c1 100644 --- a/uvicorn/loops/asyncio.py +++ b/uvicorn/loops/asyncio.py @@ -8,6 +8,8 @@ def asyncio_setup(reload: bool = False) -> None: # pragma: no cover if sys.version_info >= (3, 8) and sys.platform == "win32": if reload: - logger.warning("The --reload flag should not be \ - used in production on Windows.") + logger.warning( + "The --reload flag should not be \ + used in production on Windows." + ) asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) From 84662595d3f2c65690776ec1703650ea4cc63c47 Mon Sep 17 00:00:00 2001 From: smitchell6879 <22923016+smitchell6879@users.noreply.github.com> Date: Mon, 18 Apr 2022 00:10:58 -0400 Subject: [PATCH 4/4] Borrowed implementation --- uvicorn/loops/asyncio.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/uvicorn/loops/asyncio.py b/uvicorn/loops/asyncio.py index 5c14ca4c1..688bc602a 100644 --- a/uvicorn/loops/asyncio.py +++ b/uvicorn/loops/asyncio.py @@ -12,4 +12,12 @@ def asyncio_setup(reload: bool = False) -> None: # pragma: no cover "The --reload flag should not be \ used in production on Windows." ) - asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) + try: + from asyncio import WindowsSelectorEventLoopPolicy + except ImportError: + logger.error("Can't assign a policy which doesn't exist.") + else: + if not isinstance( + asyncio.get_event_loop_policy(), WindowsSelectorEventLoopPolicy + ): + asyncio.set_event_loop_policy(WindowsSelectorEventLoopPolicy())