From 0d5f29fd37fc55f02d84dc66331fc123f43c3054 Mon Sep 17 00:00:00 2001 From: xiaji Date: Sat, 13 Jun 2026 19:16:58 +0800 Subject: [PATCH] =?UTF-8?q?fix(active=5Fip):=20=E4=BF=AE=20debug=20log=20?= =?UTF-8?q?=E5=BC=95=E7=94=A8=E6=9C=AA=E5=AE=9A=E4=B9=89=E5=8F=98=E9=87=8F?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=20500?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bug: 之前 smoke 加 print 时把 print 放到了 'limit = ...' 之前, Python 看到函数内有 'limit =' 就把整个 limit 视为 local, print 在赋值前引用 → UnboundLocalError → 整个 login 返 500。 修: 把 print 挪到 limit 赋值之后。 --- backend/app/services/active_ip.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/app/services/active_ip.py b/backend/app/services/active_ip.py index 77792ac..1724f6e 100644 --- a/backend/app/services/active_ip.py +++ b/backend/app/services/active_ip.py @@ -81,11 +81,11 @@ async def check_or_register_login_ip(ip: str) -> None: 注意:不限制 owner/非 owner(整个站点一个池,所有用户共享) """ - import sys - print(f"[CHECK] ip={ip!r} limit={limit}", file=sys.stderr, flush=True) r = get_redis() now = int(time.time()) limit = settings.site_max_active_ips + import sys + print(f"[CHECK] ip={ip!r} limit={limit}", file=sys.stderr, flush=True) # 看 IP 是否已在 set existing = await r.zscore(REDIS_KEY, ip)