Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion swanlab/core_python/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,24 @@

from swanlab.package import get_package_version

# 设置默认超时时间为 60s
DEFAULT_TIMEOUT = 60


# 创建一个自定义的 HTTPAdapter,用于注入默认超时
class TimeoutHTTPAdapter(HTTPAdapter):
def __init__(self, *args, **kwargs):
# 从 kwargs 中取出默认超时时间,如果没有则设为 None
self.timeout = kwargs.pop("timeout", None)
super().__init__(*args, **kwargs)

def send(self, request, **kwargs):
# 如果 kwargs 中没有显式设置 timeout,则使用 self.timeout
if "timeout" not in kwargs and self.timeout is not None:
kwargs["timeout"] = self.timeout

return super().send(request, **kwargs)


def create_session() -> requests.Session:
"""
Expand All @@ -24,7 +42,7 @@ def create_session() -> requests.Session:
status_forcelist=[429, 500, 502, 503, 504],
allowed_methods=frozenset(["GET", "POST", "PUT", "DELETE", "PATCH"]),
)
adapter = HTTPAdapter(max_retries=retry)
adapter = TimeoutHTTPAdapter(max_retries=retry, timeout=DEFAULT_TIMEOUT)
session.mount("https://", adapter)
session.mount("http://", adapter)
session.headers["swanlab-sdk"] = get_package_version()
Expand Down