2014-09-02 16 views
12

Chcę ponownie uruchomić aplikację nodejs, aby zmienić jej ip. Jak mam to zrobić w samej aplikacji? Próbowałem jednak wymusić awarię, jednak jeśli aplikacja ulegnie awarii dwa razy w ciągu dziesięciu minut, to Heroku ponownie uruchomi urządzenie po dziesięciu minutach od pierwszego wystąpienia awarii.Restart heroku dyno in nodejs

Odpowiedz

5

Zapoznaj się z opakowaniem węzła this dla komendy API v3 i this api.

Najprawdopodobniej konieczne będzie utworzenie jakiegoś warunku, który wyzwala to, jeśli jest konieczne, aby uzyskać z poziomu samej aplikacji.

38

Jeśli masz zainstalowany interfejs Heroku CLI, możesz uruchomić heroku restart w folderze swojej aplikacji lub uruchomić heroku restart --app application_name.

Jeśli nie masz go zainstalowanego, możesz znaleźć informacje na jego temat here.

+0

ten nie wydaje się, aby odpowiedzieć na pytanie: „Jak Robię to w samej aplikacji? " –

3

można ponownie uruchomić nodejs hamowni prawo od tablicy rozdzielczej internetowej Heroku:

Dashboard -> Więcej -> Uruchom wszystkie hamowni

enter image description here

2

Używanie Heroku v3 API możliwe jest przy użyciu request node module

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 
    } 
); 

Istnieje również node wrapper który zapewnia podobne doświadczenia, ale jest słabo udokumentowane i wymaga zrozumienia v3 API zresztą

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)); 

Znalazłem również, że warto eksperymentować w przeglądarce z tym kodem

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(); 

  • Osobiście znalazłem za pomocą metody delete nieco dotyczące. Należy zachować ostrożność, stosując metodę delete, a sam punkt końcowy /apps/$$appName$$ spowoduje usunięcie aplikacji. Jest to z własnego doświadczenia

  • dla dowolnego z powyższych, jeśli pominąć nazwę hamowni, można ponownie uruchomić wszystkie hamowni pod app