修复:解决后端循环导入问题
问题:Docker 启动时后端服务崩溃,提示循环导入错误 原因:permission_cache.py 在模块级别导入 project_permissions.py,而后者也导入前者 解决:使用延迟导入,在方法内部导入所需的函数 Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -12,11 +12,6 @@ from typing import Any
|
||||
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.core.project_permissions import (
|
||||
get_project_role_permissions,
|
||||
get_member_role,
|
||||
)
|
||||
|
||||
|
||||
class PermissionCache:
|
||||
"""权限缓存管理器
|
||||
@@ -63,6 +58,8 @@ class PermissionCache:
|
||||
Returns:
|
||||
权限矩阵:{role: {module: {action: bool}}}
|
||||
"""
|
||||
from app.core.project_permissions import get_project_role_permissions as _get_project_role_permissions
|
||||
|
||||
if ttl is None:
|
||||
ttl = self.default_ttl
|
||||
|
||||
@@ -75,7 +72,7 @@ class PermissionCache:
|
||||
return cached_data
|
||||
|
||||
# 缓存未命中,从数据库查询
|
||||
permissions = await get_project_role_permissions(db, study_id)
|
||||
permissions = await _get_project_role_permissions(db, study_id)
|
||||
|
||||
# 存储到缓存
|
||||
self._project_permissions_cache[cache_key] = (permissions, time.time())
|
||||
@@ -100,6 +97,8 @@ class PermissionCache:
|
||||
Returns:
|
||||
成员在项目中的角色,如果不是成员则返回 None
|
||||
"""
|
||||
from app.core.project_permissions import get_member_role as _get_member_role
|
||||
|
||||
if ttl is None:
|
||||
ttl = self.default_ttl
|
||||
|
||||
@@ -112,7 +111,7 @@ class PermissionCache:
|
||||
return cached_role
|
||||
|
||||
# 缓存未命中,从数据库查询
|
||||
role = await get_member_role(db, study_id, user_id)
|
||||
role = await _get_member_role(db, study_id, user_id)
|
||||
|
||||
# 存储到缓存
|
||||
self._member_role_cache[cache_key] = (role, time.time())
|
||||
|
||||
Reference in New Issue
Block a user