Feature: 细化内置驱动器请求参数中的超时控制颗粒度 (#3571)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Ju4tCode <42488585+yanyongyu@users.noreply.github.com>
This commit is contained in:
Ailitonia
2025-07-15 10:29:18 +08:00
committed by GitHub
parent bc0682af8f
commit 4ec9bfb7d7
8 changed files with 115 additions and 19 deletions

View File

@ -27,5 +27,7 @@ from .model import RawURL as RawURL
from .model import Request as Request
from .model import Response as Response
from .model import SimpleQuery as SimpleQuery
from .model import Timeout as Timeout
from .model import TimeoutTypes as TimeoutTypes
from .model import WebSocket as WebSocket
from .model import WebSocketServerSetup as WebSocketServerSetup

View File

@ -30,6 +30,7 @@ from .model import (
QueryTypes,
Request,
Response,
TimeoutTypes,
WebSocket,
WebSocketServerSetup,
)
@ -245,7 +246,7 @@ class HTTPClientSession(abc.ABC):
headers: HeaderTypes = None,
cookies: CookieTypes = None,
version: Union[str, HTTPVersion] = HTTPVersion.H11,
timeout: Optional[float] = None,
timeout: TimeoutTypes = None,
proxy: Optional[str] = None,
):
raise NotImplementedError
@ -315,7 +316,7 @@ class HTTPClientMixin(ForwardMixin):
headers: HeaderTypes = None,
cookies: CookieTypes = None,
version: Union[str, HTTPVersion] = HTTPVersion.H11,
timeout: Optional[float] = None,
timeout: TimeoutTypes = None,
proxy: Optional[str] = None,
) -> HTTPClientSession:
"""获取一个 HTTP 会话"""

View File

@ -42,6 +42,7 @@ FileTypes: TypeAlias = Union[
FileType,
]
FilesTypes: TypeAlias = Union[dict[str, FileTypes], list[tuple[str, FileTypes]], None]
TimeoutTypes: TypeAlias = Union[float, "Timeout", None]
class HTTPVersion(Enum):
@ -50,6 +51,15 @@ class HTTPVersion(Enum):
H2 = "2"
@dataclass
class Timeout:
"""Request 超时配置。"""
total: Optional[float] = None
connect: Optional[float] = None
read: Optional[float] = None
class Request:
def __init__(
self,
@ -64,7 +74,7 @@ class Request:
json: Any = None,
files: FilesTypes = None,
version: Union[str, HTTPVersion] = HTTPVersion.H11,
timeout: Optional[float] = None,
timeout: TimeoutTypes = None,
proxy: Optional[str] = None,
):
# method
@ -76,7 +86,7 @@ class Request:
# http version
self.version: HTTPVersion = HTTPVersion(version)
# timeout
self.timeout: Optional[float] = timeout
self.timeout: TimeoutTypes = timeout
# proxy
self.proxy: Optional[str] = proxy