Add production-ready scraper with README

This commit is contained in:
Flash
2026-04-10 15:29:44 +00:00
commit 75f51121ea
1882 changed files with 350270 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
from __future__ import annotations
import asyncio
import sys
from collections.abc import Callable
def asyncio_loop_factory(use_subprocess: bool = False) -> Callable[[], asyncio.AbstractEventLoop]:
if sys.platform == "win32" and not use_subprocess:
return asyncio.ProactorEventLoop
return asyncio.SelectorEventLoop

View File

@@ -0,0 +1,17 @@
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)

View File

@@ -0,0 +1,10 @@
from __future__ import annotations
import asyncio
from collections.abc import Callable
import uvloop
def uvloop_loop_factory(use_subprocess: bool = False) -> Callable[[], asyncio.AbstractEventLoop]:
return uvloop.new_event_loop