From 7a1d7db68f38262f8f7a18be2f001f5993795387 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Mon, 7 Sep 2026 07:12:15 +0900 Subject: [PATCH] =?UTF-8?q?perf(main):=20=EB=A6=AC=EB=A1=9C=EB=93=9C=20?= =?UTF-8?q?=EA=B0=90=EC=8B=9C=EC=97=90=EC=84=9C=20node=5Fmodules=20?= =?UTF-8?q?=EB=A5=BC=20=ED=92=88=EC=9D=80=20=ED=8F=B4=EB=8D=94=EB=8F=84=20?= =?UTF-8?q?=EB=BA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 앞 커밋(351db312)이 storage·venv 는 뺐으나 `config` 가 남아 있었음. 그 안에 `node_modules` 가 있어 0.25초마다 의존성 트리를 훑고 있었음. `node_modules` 를 품은 폴더는 감시에서 제외. 그 결과 `config/` 를 고칠 때는 `main.py` 와 마찬가지로 서버를 손으로 다시 띄워야 함 — 둘 다 자주 고치는 자리가 아님. ⚠ 측정 메모 — 루트 전체 훑기는 이 기기에서 **300초에도 한 줄을 못 뱉었음** (옛 방식이 0.25초 주기를 지킬 수 없었다는 뜻). 다만 지금 기기가 계속 눌려 있어(서버 둘이 놀면서도 각 70%) 정확한 전후 수치는 못 냈음. 그 CPU 자체는 별건으로 계획서에 남겨 둠. Co-Authored-By: Claude Opus 5 (1M context) --- main.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/main.py b/main.py index 74b4aea3..6ec0c84c 100644 --- a/main.py +++ b/main.py @@ -505,13 +505,16 @@ def _reload_dirs() -> list[str]: 파이썬이 실제로 사는 폴더만 준다 — 화면 코드(TS)는 vite 가 따로 본다. """ root = Path(__file__).resolve().parent - # ⚠ 루트 자체는 넣지 않는다 — uvicorn 은 준 폴더를 `rglob("*.py")` 로 **재귀**로 훑으므로 - # 루트를 주면 storage·venv(파이썬 파일만 7,530개)를 도로 다 훑는다. 그 대신 `main.py` - # 를 고칠 때는 서버를 손으로 다시 띄워야 한다(자주 있는 일이 아님). + # ⚠ 루트와 `config` 는 넣지 않는다 — uvicorn 은 준 폴더를 `rglob("*.py")` 로 **재귀**로 + # 훑는다. 루트를 주면 storage·venv(파이썬 파일만 7,530개)를 도로 다 훑고, `config` 안에는 + # `node_modules` 가 들어 있어 역시 무겁다. 그 대신 **`main.py` 와 `config/` 를 고칠 때는 + # 서버를 손으로 다시 띄울 것** (둘 다 자주 고치는 자리가 아니다). watched: list[str] = [] for entry in sorted(root.iterdir()): if not entry.is_dir() or entry.name.startswith(".") or entry.name in _RELOAD_SKIP: continue + if (entry / "node_modules").is_dir(): + continue # 의존성 트리가 안에 있으면 훑는 값이 이득을 넘는다 if any(entry.rglob("*.py")): watched.append(str(entry)) return watched