这个项目能做什么
该仓库为免费的 Render Web 服务提供了一种保活机制。它将 GitHub Actions 工作流与一个小型 Node.js 脚本结合,定期向配置的目标 URL 发送 HTTP GET 请求,使服务不会因不活动而休眠。
所解决的问题:当服务器繁忙时,GitHub Actions 的免费调度器可能会延迟较短的 cron 间隔(例如每 5 分钟一次),导致运行之间出现空档。Render 免费层服务在约 15 分钟无流量后会休眠,因此错过 ping 可能引发冷启动。
README 中描述的方案:
- 活动的 14 分钟会话:每个 GitHub Actions 作业运行约 14 分钟,并每 4 分钟发送一次 ping(在第 0、4、8、12 分钟)。
- 多个 cron 触发器:使用诸如 */10 * * * * 和 5,15,25,35,45,55 * * * * 的计划,以便持续启动新的运行器会话。
- 所述目标是持续覆盖,因为在活动的 14 分钟窗口内每 4 分钟一次 ping 会保持在 15 分钟不活动阈值以下。
功能:
- Node.js 22 原生 API:使用内置的 fetch() 和 node:timers/promises,无外部 npm 依赖。
- 重试逻辑:遇到网络错误或非 2xx 响应时,最多重试 3 次,每次延迟 10 秒。
- 控制台输出:记录 ISO UTC 时间戳、HTTP 状态码、以毫秒为单位的响应时间、成功/失败结果以及会话循环计数。
- 手动触发:支持 workflow_dispatch 以立即运行。
配置:目标 URL 在 ping.js 顶部定义为 TARGET_URL,当前指向一个 Render 托管的端点。更改端点需要编辑该常量并推送更改。
部署:README 指示用户提交更新后的文件并推送到 main 分支,之后 GitHub Actions 会开始活动的 ping 会话。
评论
0 评分人数达到10人后显示
登录后参与讨论。