我很难找到如何调用等效的(取自this article):
heroku restart worker.1
使用heroku
gem。我看到有restart
和ps_restart
方法但看不到我可以指定的地方只重新启动这个1工作人员而不是整个应用程序。
答案 0 :(得分:47)
这是重启任何特定进程的命令
heroku ps:restart worker.1 --app APP_NAME
答案 1 :(得分:15)
我正在使用cron从应用程序内部重新启动特定工作程序。像这样:
heroku = Heroku::Client.new(ENV['APP_USERNAME'], ENV['APP_PASSWORD'])
heroku.ps_restart(ENV['APP_NAME'], :ps =>'worker.1')
答案 2 :(得分:5)
使用" heroku-api"宝石,而不是" heroku"宝石。使用" heroku"宝石这种方式仍然有效(截至今天),但已被弃用。它意味着通过控制台使用。
https://github.com/heroku/heroku.rb
api gem看起来很容易使用。从heroku网站获取API密钥,将其放入app app变量中,然后调用:
require 'heroku-api'
heroku.post_ps_restart('app', 'ps' => 'web.1') # restart 'web.1' process for 'app' app
答案 3 :(得分:1)
目前,您必须从heroku获取“platform-api”gem(documentation here)因为“heroku”gem不再工作而且“heroku-api”gem用于与之交互Heroku Legacy API。 Legacy 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')
使用以下命令重启特定的dyno:
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通过
heroku.dyno.list(app_id_or_app_name)
答案 4 :(得分:0)
扩展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的调度程序在您认为合适时运行它。