【发布时间】:2012-03-08 04:39:32
【问题描述】:
我正在努力寻找如何调用相当于(取自this article):
heroku restart worker.1
使用heroku gem。我看到有 restart 和 ps_restart 方法,但看不到我可以在哪里指定只重启这 1 个工作人员而不是整个应用程序。
【问题讨论】:
标签: heroku
我正在努力寻找如何调用相当于(取自this article):
heroku restart worker.1
使用heroku gem。我看到有 restart 和 ps_restart 方法,但看不到我可以在哪里指定只重启这 1 个工作人员而不是整个应用程序。
【问题讨论】:
标签: heroku
这是重新启动任何特定进程的命令
heroku ps:restart worker.1 --app APP_NAME
【讨论】:
worker.1,我们可以将其改写为heroku ps:restart worker.1 --app APP_NAME。
我正在使用 cron 从应用程序内重新启动特定的工作人员。像这样:
heroku = Heroku::Client.new(ENV['APP_USERNAME'], ENV['APP_PASSWORD'])
heroku.ps_restart(ENV['APP_NAME'], :ps =>'worker.1')
【讨论】:
使用“heroku-api”gem,而不是“heroku”gem。以这种方式使用“heroku”gem 仍然有效(截至今天),但已被弃用。它旨在通过控制台使用。
https://github.com/heroku/heroku.rb
api gem 看起来很容易使用。从 heroku 网站获取您的 API 密钥,将其放入您的应用配置变量中,然后调用:
require 'heroku-api'
heroku.post_ps_restart('app', 'ps' => 'web.1') # restart 'web.1' process for 'app' app
【讨论】:
目前,您必须从 heroku 获取“platform-api”gem (documentation here),因为“heroku”gem 不再工作,而“heroku-api”gem 用于与 Heroku Legacy API 交互.旧版 API 将于 2017 年 4 月 15 日停用。
首先,您必须通过 heroku toolbelt 命令行工具创建一个 oAuth 令牌:
$ heroku plugins:install heroku-cli-oauth
$ heroku authorizations:create -d "Platform API example token"
Created OAuth authorization.
ID: 2f01aac0-e9d3-4773-af4e-3e510aa006ca
Description: Platform API example token
Scope: global
Token: e7dd6ad7-3c6a-411e-a2be-c9fe52ac7ed2
在实例化客户端时使用 Token 值:
require 'platform-api'
heroku = PlatformAPI.connect_oauth('e7dd6ad7-3c6a-411e-a2be-c9fe52ac7ed2')
使用此命令重新启动特定的测功机:
heroku.dyno.restart(app_id_or_app_name, dyno_id_or_dyno_name)
或者用这个命令重新启动:
heroku.dyno.restart_all(app_id_or_app_name)
您可以使用
获取所有应用的 IDheroku.app.list
以及应用程序的 dynos 的 ids via
heroku.dyno.list(app_id_or_app_name)
【讨论】:
稍微扩展一下coderuby的答案:
heroku = PlatformAPI.connect_oauth(ENV['PLATFORM_API_TOKEN'])
worker_ids = heroku.dyno
.list(ENV['HEROKU_APP_NAME'])
.select { |dyno| dyno['type'] == 'worker' }
.map { |dyno| dyno['id'] }
worker_ids.each do |id|
heroku.dyno.restart(ENV['HEROKU_APP_NAME'], id)
end
已设置适当的环境变量。您可以将其包含在 rake 任务中,然后让 Heroku 的调度程序在您认为合适时运行它。
【讨论】: