chore: log project size errors

This commit is contained in:
JOJO 2025-11-30 13:09:36 +08:00
parent c590aef460
commit 2847ade631

View File

@ -29,12 +29,15 @@ except ImportError: # 兼容全局环境中存在同名包的情况
PROJECT_MAX_STORAGE_BYTES,
)
from modules.container_file_proxy import ContainerFileProxy
from utils.logger import setup_logger
if TYPE_CHECKING:
from modules.user_container_manager import ContainerHandle
# 临时禁用长度检查
DISABLE_LENGTH_CHECK = True
logger = setup_logger(__name__)
class FileManager:
def __init__(self, project_path: str, container_session: Optional["ContainerHandle"] = None):
self.project_path = Path(project_path).resolve()
@ -68,16 +71,24 @@ class FileManager:
return self._container_proxy.run(action, payload)
def _get_project_size(self) -> int:
"""计算项目目录的总大小(字节)"""
"""计算项目目录的总大小(字节),遇到异常时记录并抛出。"""
total = 0
if not self.project_path.exists():
return 0
for path in self.project_path.rglob('*'):
try:
if path.is_file():
total += path.stat().st_size
except PermissionError:
if not path.is_file():
continue
try:
total += path.stat().st_size
except Exception as exc:
logger.error(
"Failed to stat %s while calculating project size: %s",
path,
exc,
exc_info=True,
)
raise
return total
def _validate_path(self, path: str) -> Tuple[bool, str, Path]: