From e8a2c5a8a186b5fcb5c2d02bbb6810587da0546f Mon Sep 17 00:00:00 2001 From: xsl Date: Thu, 16 Jul 2026 08:07:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=97=A5=E5=BF=97=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E7=A1=AC=E7=BC=96=E7=A0=81=20/home/xsl?= =?UTF-8?q?=EF=BC=8C=E6=94=B9=E4=B8=BA=E5=9F=BA=E4=BA=8E=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E6=A0=B9=E8=A7=A3=E6=9E=90=EF=BC=88=E6=94=AF=E6=8C=81=20HAIR?= =?UTF-8?q?=5FLOG=5FDIR=20=E8=A6=86=E7=9B=96=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit worker 部署到 /home/ubuntu 等其他路径时,原硬编码 /home/xsl/hair/log 会导致 Permission denied。改为相对仓库根,兼容多机部署。 Co-authored-by: Cursor --- app.py | 8 ++++++-- face_analysis/hairline_grow.py | 7 +++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app.py b/app.py index af99e98..dd40853 100644 --- a/app.py +++ b/app.py @@ -1682,13 +1682,17 @@ async def hairline_grow_v2_final_v2( @app.get("/api/v1/debug/hairline_log", include_in_schema=False) async def download_hairline_log(rid: Optional[str] = None, tail: int = 500): - """返回 /home/xsl/hair/log/hairline_grow.log 的内容。 + """返回 <仓库根>/log/hairline_grow.log 的内容。 rid 非空时只返回该 request id 相关的行;tail 限制返回最后 N 行(默认 500)。 供调试页"下载日志"按钮调用。 """ from fastapi.responses import PlainTextResponse - log_path = "/home/xsl/hair/log/hairline_grow.log" + log_path = os.getenv( + "HAIR_LOG_DIR", + os.path.join(os.path.dirname(os.path.abspath(__file__)), "log"), + ) + log_path = os.path.join(log_path, "hairline_grow.log") try: with open(log_path, encoding="utf-8") as fh: lines = fh.readlines() diff --git a/face_analysis/hairline_grow.py b/face_analysis/hairline_grow.py index 4b39c29..5cfc5f1 100644 --- a/face_analysis/hairline_grow.py +++ b/face_analysis/hairline_grow.py @@ -47,8 +47,11 @@ from face_analysis.head_mask import ( _draw_baseline, ) -# 调试日志:写 /home/xsl/hair/log/hairline_grow.log,每个步骤详细记录 -_LOG_DIR = "/home/xsl/hair/log" +# 调试日志:写 <仓库根>/log/hairline_grow.log,每个步骤详细记录(可用 HAIR_LOG_DIR 覆盖) +_LOG_DIR = os.getenv( + "HAIR_LOG_DIR", + os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "log"), +) os.makedirs(_LOG_DIR, exist_ok=True) logger = logging.getLogger("hairline_grow") _log_fh = logging.FileHandler(os.path.join(_LOG_DIR, "hairline_grow.log"), encoding="utf-8")