Можно ли масштабировать конкретного работника Heroku? - PullRequest
0 голосов
/ 05 декабря 2018

В настоящее время я пытаюсь разработать приложение, которое в значительной степени опирается на работников heroku (выполняющих скрипт NodeJS, здесь нет выбора при переключении на Ruby / Rails), обрабатывающих длительные (от 1 до 168 часов) фоновые задания.Моя проблема в том, что некоторые задания могут быть завершены в течение 1 часа, в то время как другие могут занять 168, и я не хочу ждать, пока все мои работники начнут сокращаться, поскольку Heroku будет взимать плату за это время с каждого работника..

У меня нет проблем с перезапуском динамов раз в день, но я хотел бы знать, возможно ли (и если да, как) уменьшить масштаб определенного работника Heroku через API Heroku или любым другим способом(возможно, изнутри самого рабочего процесса, хотя завершение процесса изнутри только приводит к тому, что работник перезапускает себя, а не сокращает себя).

Если это невозможно, то я хотел бы знатьесли кто-то знает, как захватить «событие уменьшения» (т. е. посылается ли какой-то случайный сигнал случайному работнику, который должен быть уменьшен, например, SIGTERM или SIGKILL?).

Любой совет приветствуется.

1 Ответ

0 голосов
/ 05 декабря 2018

Один из способов сделать это - использовать одноразовые динамометры .
API Heroku позволит вам создать динамо .Dynos, созданные таким образом, не будут управляться Heroku, то есть, если они останавливаются, они не перезапускаются автоматически.

Таким образом, вы можете иметь процесс мониторинга, который ищет количество динамов, которые есть в вашем приложении (используяСнова в Heroku API вы можете перечислить динамо ) и запускать новые по мере необходимости.

Каждый динамо будет выполнять ту работу, которая вам необходима, и выключаться.Единственная функция dyno, которая постоянно масштабируется и работает, - это процесс вашего монитора.

...