Skip to content

Commit

Permalink
Fix OSError: [WinError 87] The parameter is incorrect
Browse files Browse the repository at this point in the history
  • Loading branch information
euri10 committed Apr 20, 2022
1 parent b8e65e4 commit a0ee3b5
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 8 deletions.
2 changes: 1 addition & 1 deletion uvicorn/config.py
Expand Up @@ -503,7 +503,7 @@ def load(self) -> None:
def setup_event_loop(self) -> None:
loop_setup: Optional[Callable] = import_from_string(LOOP_SETUPS[self.loop])
if loop_setup is not None:
loop_setup(reload=self.reload)
loop_setup(reload=self.reload, workers=self.workers)

def bind_socket(self) -> socket.socket:
logger_args: List[Union[str, int]]
Expand Down
16 changes: 13 additions & 3 deletions uvicorn/loops/asyncio.py
@@ -1,11 +1,21 @@
import asyncio
import logging
import sys
from typing import Optional

logger = logging.getLogger("uvicorn.error")


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.")
def asyncio_setup(
reload: bool = False, workers: Optional[int] = None
) -> None: # pragma: no cover
if (
sys.version_info >= (3, 8)
and sys.platform == "win32"
and any([reload, workers])
):
if reload:
logger.warning(
"The --reload flag should not be used in production on Windows."
)
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
9 changes: 6 additions & 3 deletions uvicorn/loops/auto.py
@@ -1,11 +1,14 @@
def auto_loop_setup(reload: bool = False) -> None:
from typing import Optional


def auto_loop_setup(reload: bool = False, workers: Optional[int] = None) -> None:
try:
import uvloop # noqa
except ImportError: # pragma: no cover
from uvicorn.loops.asyncio import asyncio_setup as loop_setup

loop_setup(reload=reload)
loop_setup(reload=reload, workers=workers)
else: # pragma: no cover
from uvicorn.loops.uvloop import uvloop_setup

uvloop_setup(reload=reload)
uvloop_setup(reload=reload, workers=workers)
3 changes: 2 additions & 1 deletion uvicorn/loops/uvloop.py
@@ -1,7 +1,8 @@
import asyncio
from typing import Optional

import uvloop


def uvloop_setup(reload: bool = False) -> None:
def uvloop_setup(reload: bool = False, workers: Optional[int] = None) -> None:
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())

0 comments on commit a0ee3b5

Please sign in to comment.