Как перезапустить работника Heroku, используя Heroku Gem - PullRequest
21 голосов
/ 08 марта 2012

Я изо всех сил пытаюсь найти, как вызвать эквивалент (взятый из этой статьи ):

heroku restart worker.1

с использованием heroku драгоценного камня . Я вижу, что есть методы restart и ps_restart, но не вижу, где я могу указать, чтобы перезапустить только 1 рабочий, а не все приложение.

Ответы [ 5 ]

48 голосов
/ 09 марта 2012

Вот команда для перезапуска любого конкретного процесса

heroku ps:restart worker.1 --app APP_NAME
15 голосов
/ 11 апреля 2012

Я делаю определенные перезапуски рабочих из приложения, используя cron. Как это:

heroku = Heroku::Client.new(ENV['APP_USERNAME'], ENV['APP_PASSWORD'])
heroku.ps_restart(ENV['APP_NAME'], :ps =>'worker.1')

Из Документация по Heroku API

5 голосов
/ 28 августа 2012

Используйте камень "heroku-api", а не камень "heroku".Использование драгоценного камня "heroku" таким образом все еще работает (на сегодняшний день), но не рекомендуется.Он предназначен для использования через консоль.

https://github.com/heroku/heroku.rb

Gem api выглядит очень простым в использовании.Возьмите свой API-ключ с веб-сайта heroku, поместите его в переменные конфигурации вашего приложения и вызовите:

require 'heroku-api'
heroku.post_ps_restart('app', 'ps' => 'web.1')   # restart 'web.1' process for 'app' app
1 голос
/ 15 марта 2017

В настоящее время вы должны взять камень " platform-api " (документация здесь ) у heroku, потому что камень "heroku" больше не работает, а "heroku-api""gem используется для взаимодействия с Heroku Legacy API.Legacy API выйдет 15 апреля 2017 года.

Сначала необходимо создать токен oAuth с помощью инструмента командной строки heroku:

$ 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

Используйте значение токена при создании экземпляраclient:

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)

Вы можете получить идентификаторы:все ваши приложения с

heroku.app.list

И идентификаторы динамометрических приложений приложения через

heroku.dyno.list(app_id_or_app_name)
0 голосов
/ 18 сентября 2017

Чтобы немного расширить ответ кодеруби:

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, когда сочтете нужным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...