Я хочу перезапустить приложение nodejs, чтобы изменить его ip. Как я могу сделать это в самом приложении? Тем не менее, я попытался сделать сбой, если приложение сработает дважды в течение десяти минут, после чего герой перезапустит дино через десять минут после первого сбоя.
Перезапустить heroku dyno в nodejs
Ответ 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, вы перезапустите все диноды в приложении