18 lines
566 B
Python
18 lines
566 B
Python
from __future__ import annotations
|
|
|
|
import asyncio
|
|
from collections.abc import Callable
|
|
|
|
|
|
def auto_loop_factory(use_subprocess: bool = False) -> Callable[[], asyncio.AbstractEventLoop]:
|
|
try:
|
|
import uvloop # noqa
|
|
except ImportError: # pragma: no cover
|
|
from uvicorn.loops.asyncio import asyncio_loop_factory as loop_factory
|
|
|
|
return loop_factory(use_subprocess=use_subprocess)
|
|
else: # pragma: no cover
|
|
from uvicorn.loops.uvloop import uvloop_loop_factory
|
|
|
|
return uvloop_loop_factory(use_subprocess=use_subprocess)
|