mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 17:30:23 +08:00
fix(stability): 健康监控 DB 操作异步化,防止 worker 超时崩溃
- executor: record_success 通过 asyncio.to_thread offload 到线程池 - error_handler: 3 处 record_failure 同样 offload 到线程池 - sync_execute: 设置 expire_on_commit=False 防止 commit 后 ORM 懒加载 - handler_adapter_base: 归一化 check_endpoint 的 base_url 输入
This commit is contained in:
62
tests/unit/test_handler_adapter_base.py
Normal file
62
tests/unit/test_handler_adapter_base.py
Normal file
@@ -0,0 +1,62 @@
|
||||
import pytest
|
||||
|
||||
from src.api.handlers.claude.adapter import ClaudeChatAdapter
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_check_endpoint_accepts_base_url_dict(monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
captured: dict[str, object] = {}
|
||||
|
||||
async def fake_run_endpoint_check(**kwargs):
|
||||
captured.update(kwargs)
|
||||
return {"status_code": 200, "headers": {}, "response_time_ms": 1, "request_id": "test"}
|
||||
|
||||
monkeypatch.setattr(
|
||||
"src.api.handlers.base.endpoint_checker.run_endpoint_check",
|
||||
fake_run_endpoint_check,
|
||||
)
|
||||
|
||||
await ClaudeChatAdapter.check_endpoint(
|
||||
client=None,
|
||||
base_url={"base_url": "https://api.anthropic.com"},
|
||||
api_key="test-key",
|
||||
request_data={
|
||||
"model": "claude-sonnet-4-5-20250929",
|
||||
"messages": [{"role": "user", "content": "hello"}],
|
||||
"max_tokens": 32,
|
||||
"stream": False,
|
||||
},
|
||||
)
|
||||
|
||||
assert captured["url"] == "https://api.anthropic.com/v1/messages"
|
||||
assert isinstance(captured["json_body"], dict)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_check_endpoint_accepts_url_key_in_base_url_dict(
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
) -> None:
|
||||
captured: dict[str, object] = {}
|
||||
|
||||
async def fake_run_endpoint_check(**kwargs):
|
||||
captured.update(kwargs)
|
||||
return {"status_code": 200, "headers": {}, "response_time_ms": 1, "request_id": "test"}
|
||||
|
||||
monkeypatch.setattr(
|
||||
"src.api.handlers.base.endpoint_checker.run_endpoint_check",
|
||||
fake_run_endpoint_check,
|
||||
)
|
||||
|
||||
await ClaudeChatAdapter.check_endpoint(
|
||||
client=None,
|
||||
base_url={"url": "https://api.anthropic.com/v1"},
|
||||
api_key="test-key",
|
||||
request_data={
|
||||
"model": "claude-sonnet-4-5-20250929",
|
||||
"messages": [{"role": "user", "content": "hello"}],
|
||||
"max_tokens": 32,
|
||||
"stream": False,
|
||||
},
|
||||
)
|
||||
|
||||
assert captured["url"] == "https://api.anthropic.com/v1/messages"
|
||||
Reference in New Issue
Block a user