寻求无需绑定信用卡免费调度Heroku Dynos休眠时段的方法
无需绑卡的Heroku免费Dynos调度方案
这里有几个无需绑定信用卡的免费方案,可实现Dynos定时休眠/启动:
利用GitHub Actions定时调用Heroku API
- 登录Heroku账户,进入账户设置页面,找到并复制你的API Key(授权令牌)。
- 在存放应用代码的GitHub仓库中,进入「Settings」-「Secrets and variables」-「Actions」,添加两个秘密变量:
HEROKU_API_KEY(填入复制的API密钥)、HEROKU_APP_NAME(填入你的Heroku应用名称)。 - 在仓库的
.github/workflows目录下创建YAML配置文件(例如命名为heroku-scheduler.yml),写入以下内容:name: Heroku Dyno Scheduler on: schedule: # 每天凌晨0点休眠(UTC时区,可根据需求调整,注意时区转换) - cron: '0 0 * * *' # 每天早上8点启动(UTC时区) - cron: '0 8 * * *' jobs: manage-dyno: runs-on: ubuntu-latest steps: - name: Stop Dyno if: github.event.schedule == '0 0 * * *' run: curl -n -X PATCH https://api.heroku.com/apps/${{ secrets.HEROKU_APP_NAME }}/formation/web -d '{"quantity": 0}' -H "Content-Type: application/json" -H "Authorization: Bearer ${{ secrets.HEROKU_API_KEY }}" - name: Start Dyno if: github.event.schedule == '0 8 * * *' run: curl -n -X PATCH https://api.heroku.com/apps/${{ secrets.HEROKU_APP_NAME }}/formation/web -d '{"quantity": 1}' -H "Content-Type: application/json" -H "Authorization: Bearer ${{ secrets.HEROKU_API_KEY }}"
配置完成后,GitHub Actions会自动按设定时间调用Heroku API启停Dynos,全程免费且无需绑卡。
本地定时脚本(适合个人开发场景)
如果你有长期运行的本地设备(如家用NAS、常开的电脑),可以编写Shell脚本搭配系统定时任务(Linux的cron、Windows的任务计划程序)来控制Dynos:
示例Shell脚本(命名为heroku-dyno-control.sh):#!/bin/bash HEROKU_API_KEY="你的Heroku API密钥" HEROKU_APP_NAME="你的应用名称" # 休眠Dynos stop_dyno() { curl -n -X PATCH https://api.heroku.com/apps/$HEROKU_APP_NAME/formation/web -d '{"quantity": 0}' -H "Content-Type: application/json" -H "Authorization: Bearer $HEROKU_API_KEY" } # 启动Dynos start_dyno() { curl -n -X PATCH https://api.heroku.com/apps/$HEROKU_APP_NAME/formation/web -d '{"quantity": 1}' -H "Content-Type: application/json" -H "Authorization: Bearer $HEROKU_API_KEY" } # 根据传入参数执行对应操作 case "$1" in stop) stop_dyno ;; start) start_dyno ;; *) echo "Usage: $0 {stop|start}" ;; esac给脚本添加执行权限:
chmod +x heroku-dyno-control.sh,再通过cron设置定时任务:# 每天凌晨0点执行休眠 0 0 * * * /脚本存放路径/heroku-dyno-control.sh stop # 每天早上8点执行启动 0 8 * * * /脚本存放路径/heroku-dyno-control.sh start
注意事项
- Heroku API有速率限制,但定时启停的调用频率远低于限制阈值,不会触发限制。
- 调整定时时间时,需注意时区差异(GitHub Actions默认使用UTC时区,本地定时任务遵循系统时区)。
内容的提问来源于stack exchange,提问作者alipali737
相关产品推荐
相关产品推荐

