我在努力尋找如何調用(取自this article)相當於重新啓動Heroku的工人:使用heroku
gem如何使用Heroku的寶石
heroku restart worker.1
。我看到有restart
和ps_restart
方法,但沒有看到我可以指定只重新啓動這1個工作人員,而不是整個應用程序。
我在努力尋找如何調用(取自this article)相當於重新啓動Heroku的工人:使用heroku
gem如何使用Heroku的寶石
heroku restart worker.1
。我看到有restart
和ps_restart
方法,但沒有看到我可以指定只重新啓動這1個工作人員,而不是整個應用程序。
我使用一個cron應用程序中做具體工作人員重新啓動。就像這樣:
heroku = Heroku::Client.new(ENV['APP_USERNAME'], ENV['APP_PASSWORD'])
heroku.ps_restart(ENV['APP_NAME'], :ps =>'worker.1')
這裏是命令重新啓動任何特定的過程
heroku ps:restart worker.1 --app APP_NAME
使用 「的Heroku的API」 的寶石,而不是 「Heroku的」 寶石。以這種方式使用「heroku」寶石仍然有效(截至今天),但已被棄用。它意味着通過控制檯使用。
https://github.com/heroku/heroku.rb
的API寶石看起來非常容易使用。抓住從Heroku的網站,你的API密鑰,把它放在你的應用程序配置變量,並調用:
require 'heroku-api'
heroku.post_ps_restart('app', 'ps' => 'web.1') # restart 'web.1' process for 'app' app
目前,你必須從Heroku的採取「platform-api」寶石(documentation here),因爲「Heroku的」寶石不再工作,「heroku-api」gem用於與Heroku Legacy API進行交互。傳統API將在日落4月15日,2017年
首先,你必須通過Heroku的工具區中的命令行工具來創建一個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)
或重新啓動LL用這個命令:
heroku.dyno.restart_all(app_id_or_app_name)
你可以得到你所有的應用程序的ID與
heroku.app.list
,並通過
heroku.dyno.list(app_id_or_app_name)
是現在使用HEROKU_API_KEY配置var的舊方法現在是多餘的?我應該將OAuth令牌保存爲新的配置var嗎? – Tom 2017-07-18 11:12:20
應用程序的DYNOS的ID,以擴大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的調度程序在你認爲合適的時候運行它。
由於我們已經從問題中知道特定進程是'worker.1',因此我們可以將其改寫爲'heroku ps:restart worker.1 --app APP_NAME'。 – 2015-04-14 18:22:26