Heroku Cedar:如何根据时间缩放WEB dynos

dns*_*ero 12 automation heroku ruby-on-rails-3

我希望我的Rails 3.1应用程序在早上8点扩展到1个web dyno,然后在下午5点降低到0 web dynos.

但是,我不想注册付费服务,我不能指望我的家用电脑连接到互联网.

似乎Heroku Scheduler应该让这个变得微不足道.任何快速解决方案或链接?

dns*_*ero 11

答案是'是'你可以从调度程序那里做到这一点,一旦你知道了答案,这是微不足道的:

  1. 使用您的应用名称添加heroku config var:heroku config:添加APP_NAME:blah
  2. 将gem'heroku'添加到您的Gemfile中
  3. 为了验证,请手动放大/缩小您的应用:heroku ps:scale web = 2
  4. 向lib/tasks/scheduler.rake添加rake任务:

    desc "Scale up dynos"
    task :spin_up => :environment do
      heroku = Heroku::Client.new('USERNAME', 'PASSWORD')
      heroku.ps_scale(ENV['APP_NAME'], :type=>'web', :qty=>2)
    end
    # Add a similar task to Spin down
    
    Run Code Online (Sandbox Code Playgroud)
  5. 添加Scheduler插件:heroku插件:添加调度程序:标准

  6. 使用Scheduler Web界面可以随时添加"rake spin_up"
  7. 添加rake spin_down任务并随时安排它.

注意: 需要步骤1,因为我找不到任何其他方式来确定应用程序名称(我为我的应用程序使用'staging'和'production'环境.

第3步是必需的,因为否则ruby命令会出错,因为它要求您首先同意(通过是/否响应)您将因此操作而向您收取费用.

在第4步中,我找不到任何关于如何通过heroku gem使用API​​密钥执行此操作的文档,因此看起来需要user/pass.

希望这有助于其他人!


Kyl*_*e C 11

刚刚实现了这种方法(@dnszero上面的答案很好),我想我会用Heroku的新API更新答案.

将您的应用名称添加为heroku配置变量

 require 'heroku-api'
  desc "Scale UP dynos"
   task :spin_up => :environment do
     heroku = Heroku::API.new(:api_key => 'YOUR_ACCOUNT_API_KEY')
     heroku.post_ps_scale(ENV['APP_NAME'], 'web', 2)
   end
Run Code Online (Sandbox Code Playgroud)

这是heroku(2.31.2),heroku-api(0.3.5)