ec1509c46d2aa2eea4b8caaa3531107cf550dd14
getBucketConfig 每次都查一次 `throttling` 配置项,而限流点在提交判题、AI 分析、 流程图评分上(5 处调用)—— 判题高峰期等于每条提交多一趟数据库,只为读一个几乎 从不变的值。上一代在 options/options.py 的 my_property 里也是带 TTL 缓存的, 重写时漏掉了。 缓存放进程内而不是 Redis:每站只有一个 api 进程服务读请求(oj-api 单容器、 Bun.serve 没有 reusePort、worker 只消费队列),进程内 Map 就等于全站缓存, 放 Redis 只是多一趟网络加一次序列化。异常分支特意不写缓存 —— 数据库抖一下不该 让接下来一整分钟全站都按默认参数限流。`throttling` 没有后台界面、只能直接改库, 改完最多一分钟后生效。 顺带给三条 Redis 连接都挂上 error 监听。ioredis 对没有监听者的 error 走 silentEmit:不崩进程,但把连接错误直接 console.error 到 stderr,绕开这里的日志, 而且不说是哪条连接 —— 这个进程同时开着会话读写、两条队列、一条订阅,「哪条」正是 要先知道的。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XvmqDsZNyUo9P3sFQtoWVB
Description
No description provided
9.5 MiB
Languages
TypeScript
58.4%
Vue
39.2%
Shell
1.5%
Dockerfile
0.8%