Commit a30755f

benny-dou <60535774+benny-dou@users.noreply.github.com>
2025-02-24 17:59:46
feat: support custom request timeout
1 parent bf3dace
Changed files (2)
src/config.py
@@ -14,6 +14,7 @@ semaphore = asyncio.Semaphore(8)  # max 8 concurrent downloads
 DOWNLOAD_DIR = os.getenv("DOWNLOAD_DIR", Path(__file__).parent.joinpath("downloads").as_posix())
 TZ = os.getenv("TZ", "Asia/Shanghai")
 DEVICE_NAME = os.getenv("DEVICE_NAME", "BennyBot")
+REQUEST_TIMEOUT = int(os.getenv("REQUEST_TIMEOUT", "60"))  # seconds
 TEXT_LENGTH = int(os.getenv("TEXT_LENGTH", "4096"))  # Maximum length of text message
 CAPTION_LENGTH = int(os.getenv("CAPTION_LENGTH", "1024"))  # 4096 for Premium user
 MAX_FILE_BYTES = int(os.getenv("MAX_FILE_BYTES", "2000")) * 1024 * 1024  # 4000 MB for Premium user
src/networking.py
@@ -13,7 +13,7 @@ import anyio
 from httpx import AsyncClient, AsyncHTTPTransport, HTTPStatusError, RequestError
 from loguru import logger
 
-from config import DOWNLOAD_DIR, PROXY, UA, cache, semaphore
+from config import DOWNLOAD_DIR, PROXY, REQUEST_TIMEOUT, UA, cache, semaphore
 from messages.progress import modify_progress
 from messages.utils import summay_media
 from preview.utils import av2bv
@@ -58,7 +58,7 @@ async def hx_req(
     follow_redirects: bool = True,
     check_keys: list[str] | None = None,
     check_kv: dict | None = None,
-    timeout: int = 10,  # noqa: ASYNC109
+    timeout: int = REQUEST_TIMEOUT,  # noqa: ASYNC109
     retry: int = 0,
     max_retry: int = 2,
     silent: bool = False,
@@ -172,7 +172,7 @@ async def download_file(
         headers=headers,
         transport=AsyncHTTPTransport(retries=3),
         proxy=PROXY.DOWNLOAD,
-        timeout=10,
+        timeout=REQUEST_TIMEOUT,
         follow_redirects=True,
         event_hooks={"request": [log_req], "response": [log_resp]},
     )