Перезапустить heroku dyno в nodejs

Я хочу перезапустить приложение nodejs, чтобы изменить его ip. Как я могу сделать это в самом приложении? Тем не менее, я попытался сделать сбой, если приложение сработает дважды в течение десяти минут, после чего герой перезапустит дино через десять минут после первого сбоя.

Ответ 1

Посмотрите это node оболочка для API v3 и this api.

Вероятно, вам нужно создать какое-то условие, которое вызывает это, если это действительно нужно сделать из самого приложения.

Ответ 2

Если у вас установлен CLI Heroku, вы можете запустить heroku restart в папке вашего приложения или запустить heroku restart --app application_name.

Если у вас его нет, вы можете найти информацию об этом здесь.

Ответ 3

Вы можете перезапустить dyna nodejs прямо с веб-панели героя:

Панель инструментов → Дополнительно → Перезагрузка всех динозавров

введите описание изображения здесь

Ответ 4

Используя Heroku v3 API, можно использовать запрос node модуль

var token = 'youAPIKeyHere';
var appName = 'yourAppName here';
var dynoName = 'yourDynoHere';

var request = require('request');

request.delete(
    {
        url: 'https://api.heroku.com/apps/' + appName + '/dynos/',
        headers: {
            'Content-Type': 'application/json',
            'Accept': 'application/vnd.heroku+json; version=3',
            'Authorization': 'Bearer ' + token
        }
    },
    function(error, response, body) {
        // Do stuff
    }
);

Существует также node обертка, которая предоставляет аналогичный опыт, но плохо документирована и требует понимания v3 API в любом случае

var token = 'youAPIKeyHere';
var appName = 'yourAppName here';
var dynoName = 'yourDynoHere';

var Heroku = require('heroku-client');

var heroku = new Heroku({ token: token });
    heroku .delete('/apps/' + appName + '/dynos/' + dynoName)
           .then( x => console.log(x) );

Я также счел полезным экспериментировать в браузере с этим кодом

var token = 'youAPIKeyHere';
var appName = 'yourAppName here';
var dynoName = 'yourDynoHere';

var xhr = new XMLHttpRequest();
    xhr.open(
        'DELETE',
        'https://api.heroku.com/apps/' + appName + '/dynos/' + dynoName
    );
    xhr.setRequestHeader('Content-Type', 'application/json');
    xhr.setRequestHeader('Accept', 'application/vnd.heroku+json; version=3');
    xhr.setRequestHeader('Authorization', 'Bearer ' + token);
    xhr.onload = function() {
        console.log(xhr.response);
    };
    xhr.send();

  • Я лично нашел использование метода удаления немного относительно. Следует соблюдать осторожность при использовании метода delete, а конечная точка /apps/$$appName$$ сама удалит приложение. Это из личного опыта.

  • Для любого из вышеперечисленного, если вы опустите имя dyno, вы перезапустите все диноды в приложении