fix(backend): approval.py + byod.py 改用 settings.create_redis_client()
PR #3 (commit 9292f41) 引入的回归:get_redis() 用 `from app.main import redis_client`,
但 redis_client 是 lifespan 函数内的局部变量,永远不可跨模块导入。
冒烟测试:ImportError: cannot import name 'redis_client' from 'app.main'
→ 整个 approval 模块加载失败,所有审批路由 500
修复:改用 settings.create_redis_client() 自建连接(与 approval_webhook.py:_writeback_agent_todo 同款)。
byod.py 同样问题,预防性一并修复(避免 byod 模块首次被访问时再炸)。
实测:
- POST /approval/callback → HTTP 200 {errcode:0}
- GET /byod/eligible-positions → HTTP 200 (845B)
This commit is contained in:
@@ -90,9 +90,12 @@ APPROVAL_SP_STATUS_TODO_STATUS: Dict[int, str] = {
|
|||||||
|
|
||||||
# Redis客户端(依赖注入)
|
# Redis客户端(依赖注入)
|
||||||
async def get_redis() -> aioredis.Redis:
|
async def get_redis() -> aioredis.Redis:
|
||||||
"""获取Redis客户端依赖"""
|
"""获取Redis客户端依赖
|
||||||
from app.main import redis_client
|
|
||||||
return redis_client
|
使用 settings.create_redis_client() 自建连接,而非从 app.main 导入 redis_client
|
||||||
|
(后者是 lifespan 函数内的局部变量,不可跨模块导入)。
|
||||||
|
"""
|
||||||
|
return settings.create_redis_client()
|
||||||
|
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|||||||
@@ -24,9 +24,12 @@ router = APIRouter()
|
|||||||
|
|
||||||
# Redis客户端(依赖注入)
|
# Redis客户端(依赖注入)
|
||||||
async def get_redis() -> aioredis.Redis:
|
async def get_redis() -> aioredis.Redis:
|
||||||
"""获取Redis客户端依赖"""
|
"""获取Redis客户端依赖
|
||||||
from app.main import redis_client
|
|
||||||
return redis_client
|
使用 settings.create_redis_client() 自建连接,而非从 app.main 导入 redis_client
|
||||||
|
(后者是 lifespan 函数内的局部变量,不可跨模块导入)。
|
||||||
|
"""
|
||||||
|
return settings.create_redis_client()
|
||||||
|
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|||||||
Reference in New Issue
Block a user