RRRosmontis 212adb1e25 perf(pixiv): 改用 waitress 线程池,缓存路径改为相对路径
- IMAGE_DIR 由硬编码 /home/pixiv/images 改为 (Path(__file__).parent/'../cache/pixiv/images').resolve()
  (即 source/cache/pixiv/images),mkdir 补 parents=True
- systemd/pixiv.service: ExecStart 改为 waitress-serve --host=127.0.0.1 --port=9007 --threads=8 pixiv:app
  替代 Flask 开发服务器(thread-per-request 无上限,突发流量下线程爆炸)
- __main__ 兜底加 threaded=True,手动运行时不串行
2026-09-13 02:26:34 +08:00

OpenAPI

统一接口服务。线上入口:https://openapi.rrrosmontis.icu

结构

source/
├── openapi/main.py        # 聚合层 (127.0.0.1:9888) /pixiv/get_image /bilibili/get_video
├── pixiv/
│   ├── pixiv.py           # Pixiv 图片服务 (9088)
│   ├── refresh_token.py   # Pixiv OAuth token 刷新守护
│   └── tokens.template.json  # Pixiv token 模板
└── bilibili/
    ├── bilibili.py        # bilibili 视频服务 (19990)
    ├── refresh_cookie.py  # cookie 定时刷新守护
    ├── qr_login.py        # 扫码登录获取 cookie
    └── qr_login_fast.py
nginx/
└── openapi.rrrosmontis.icu.conf  # nginx 统一入口(/pixiv/ /bilibili/ /img-master/ /img-original/ 图片反代)
systemd/
├── openapi.service               # 聚合层
├── pixiv.service                 # Pixiv 图片服务
├── bilibili.service              # bilibili 视频服务
├── bilibili-refresh.service      # cookie 刷新守护(每 50–70 分钟随机刷新)
└── pixiv-token-refresh.service   # Pixiv token 刷新守护(每 30–60 分钟随机刷新)

部署

  1. token:复制 source/pixiv/tokens.template.json 为 source/pixiv/tokens.json,填入实际 pixiv token
  2. bilibili cookie:放置 source/bilibili/cookies.txt(name=value 格式),或运行 qr_login.py 扫码生成
  3. 服务:将 systemd/*.service 安装到 /etc/systemd/system/,启用并启动 openapi / pixiv / bilibili / bilibili-refresh / pixiv-token-refresh(systemctl enable --now)
  4. nginx:将 nginx/openapi.rrrosmontis.icu.conf 放入 /etc/nginx/conf.d/,nginx -t && systemctl reload nginx
  5. 定时任务:无 cron/timer——bilibili-refresh(每 50–70 分钟刷 cookie)与 pixiv-token-refresh(每 30–60 分钟刷 Pixiv OAuth token,轮换后的 refresh_token 原子落盘)均为常驻守护,内部循环随机间隔,systemd Restart=always 兜底
S
Description
No description provided
Readme
223 KiB
Languages
Python 100%