Server 与选项
🖥️ `pkg/api/types.go` / `server_methods.go` — 服务主体。
📁 源码:
types.go·server_methods.go
类型
| 符号 | 源码 | 说明 |
|---|---|---|
ServerOptions | types.go#L154 | 服务配置 |
Server | types.go#L175 | 服务主体 |
MemoryWriter | types.go#L185 | 内存结果存储 |
NewServer(options) | server_methods.go#L15 | 构造 |
Server 方法
| 方法 | 源码 | 说明 |
|---|---|---|
InitPool(opts) | L27 | 初始化浏览器池 |
ClosePool() | L38 | 关闭池 |
GetBlacklist(opts) | L45 | 取黑名单 |
ProcessScreenshot(req, opts) | L51 | 执行截图 |
SetupRoutes() | L90 | 注册路由 |
HandleRoot | L119 | 根路径 |
Run() | L134 | 启动监听 |
HandleStats | L160 | 统计 |
ServerOptions 字段
| 字段 | 说明 |
|---|---|
Host/Port | 监听地址 |
APIKey | 鉴权密钥 |
MaxConcurrent | 并发上限 |
QueueSize | 等待队列 |
OutputDir | 截图存储目录 |
ChromeOptions | Chrome/池配置 |
生命周期
启动与关闭时序
下图展示 Server 从构造、初始化池、注册路由、监听服务到优雅关闭的完整交互过程:调用方依次触发 NewServer → InitPool → SetupRoutes → Run,收到信号后 ClosePool 释放 Chrome 子进程。
优雅关闭别忘 ClosePool
ClosePool() 释放浏览器池与 Chrome 进程。服务退出前务必调用,否则 Chrome 子进程残留,长期跑会越积越多吃光内存。容器场景靠 docker stop 的 SIGTERM + 进程信号处理触发。