mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 17:30:23 +08:00
refactor: 共享请求管道、按需懒加载、流式内存护栏与连接池治理
- 抽取 ApiRequestPipeline 单例,44 个路由文件共享同一实例 - Handler/Adapter 模块级 __getattr__ 延迟导入,减少启动时间 - 新增 ensure_stream_buffer_limit() 流式内存护栏(16MB 单行 / 32MB 总量) - HTTP 空闲连接清理与 curl_cffi LRU 会话池 - ensure_providers_bootstrapped 按需引导指定 provider_types - Usage 事件序列化迁移至 msgpack,Redis codec 隔离 - 启动预热任务(/readyz 就绪门控)与优雅关闭 - 通知邮件模块独立开关与 SMTP 配置校验 - CryptoService DCL 线程安全修复 - 通知模块开关 DB 查询 30s 内存缓存 - /readyz 对 unknown 状态返回 503 - 预热关闭 5s 超时保护 - 预热适配器逐个 try-except 容错 - FormatConversionRegistry 哨兵模式防并发重复物化 - 流式缓冲检查无条件执行 Closes #230 Co-authored-by: AAEE86 <ppk0227@hotmail.com>
This commit is contained in:
41
tests/clients/test_redis_client.py
Normal file
41
tests/clients/test_redis_client.py
Normal file
@@ -0,0 +1,41 @@
|
||||
from src.clients import redis_client as redis_client_module
|
||||
from src.clients.redis_client import RedisClientManager, RedisState
|
||||
|
||||
|
||||
def _seed_open_circuit(manager: RedisClientManager) -> None:
|
||||
manager._circuit_open_until = 9999999999.0
|
||||
manager._consecutive_failures = 5
|
||||
manager._last_error = "boom"
|
||||
|
||||
|
||||
def test_reset_redis_circuit_breaker_resets_both_clients() -> None:
|
||||
old_global = redis_client_module._redis_manager
|
||||
old_usage = redis_client_module._usage_queue_redis_manager
|
||||
try:
|
||||
global_manager = RedisClientManager(client_name="global")
|
||||
usage_manager = RedisClientManager(client_name="usage")
|
||||
_seed_open_circuit(global_manager)
|
||||
_seed_open_circuit(usage_manager)
|
||||
|
||||
redis_client_module._redis_manager = global_manager
|
||||
redis_client_module._usage_queue_redis_manager = usage_manager
|
||||
|
||||
assert redis_client_module.reset_redis_circuit_breaker() is True
|
||||
assert global_manager.get_state() == RedisState.NOT_INITIALIZED
|
||||
assert usage_manager.get_state() == RedisState.NOT_INITIALIZED
|
||||
finally:
|
||||
redis_client_module._redis_manager = old_global
|
||||
redis_client_module._usage_queue_redis_manager = old_usage
|
||||
|
||||
|
||||
def test_reset_redis_circuit_breaker_returns_false_when_uninitialized() -> None:
|
||||
old_global = redis_client_module._redis_manager
|
||||
old_usage = redis_client_module._usage_queue_redis_manager
|
||||
try:
|
||||
redis_client_module._redis_manager = None
|
||||
redis_client_module._usage_queue_redis_manager = None
|
||||
|
||||
assert redis_client_module.reset_redis_circuit_breaker() is False
|
||||
finally:
|
||||
redis_client_module._redis_manager = old_global
|
||||
redis_client_module._usage_queue_redis_manager = old_usage
|
||||
Reference in New Issue
Block a user