mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-01 01:10:21 +08:00
* feat: implement request retry mechanism for provider requests * feat: add request max retries configuration and implement retry logic for provider requests * feat: update fake_query function to accept request_max_retries parameter * feat: remove retry_rate_limits from provider request calls
28 lines
751 B
Python
28 lines
751 B
Python
import httpx
|
|
import pytest
|
|
|
|
import astrbot.core.provider.sources.request_retry as request_retry
|
|
from astrbot.core.provider.sources.request_retry import retry_provider_request
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_retry_provider_request_uses_configured_max_retries(monkeypatch):
|
|
monkeypatch.setattr(request_retry, "REQUEST_RETRY_WAIT_MIN_S", 0)
|
|
monkeypatch.setattr(request_retry, "REQUEST_RETRY_WAIT_MAX_S", 0)
|
|
|
|
calls = 0
|
|
|
|
async def request():
|
|
nonlocal calls
|
|
calls += 1
|
|
raise httpx.ConnectError("temporary connection failure")
|
|
|
|
with pytest.raises(httpx.ConnectError):
|
|
await retry_provider_request(
|
|
"Test",
|
|
request,
|
|
max_attempts=2,
|
|
)
|
|
|
|
assert calls == 2
|