You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求无需绑定信用卡免费调度Heroku Dynos休眠时段的方法

无需绑卡的Heroku免费Dynos调度方案

这里有几个无需绑定信用卡的免费方案,可实现Dynos定时休眠/启动:

  • 利用GitHub Actions定时调用Heroku API

    1. 登录Heroku账户,进入账户设置页面,找到并复制你的API Key(授权令牌)。
    2. 在存放应用代码的GitHub仓库中,进入「Settings」-「Secrets and variables」-「Actions」,添加两个秘密变量:HEROKU_API_KEY(填入复制的API密钥)、HEROKU_APP_NAME(填入你的Heroku应用名称)。
    3. 在仓库的.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 21:54:17