【发布时间】:2014-10-26 10:44:07
【问题描述】:
我想重新启动一个 nodejs 应用程序来更改它的 ip。我将如何在应用程序本身内执行此操作?我尝试过强制崩溃,但是如果应用程序在十分钟内崩溃两次,那么 heroku 将在第一次崩溃十分钟后重新启动测功机。
【问题讨论】:
我想重新启动一个 nodejs 应用程序来更改它的 ip。我将如何在应用程序本身内执行此操作?我尝试过强制崩溃,但是如果应用程序在十分钟内崩溃两次,那么 heroku 将在第一次崩溃十分钟后重新启动测功机。
【问题讨论】:
使用Heroku v3 API 可以使用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
}
);
还有一个node wrapper 提供了类似的体验,但记录不充分,无论如何都需要了解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名称,会重启app下的所有dyno
【讨论】:
【讨论】:
如果您安装了 Heroku CLI,您可以在应用程序的文件夹中运行 heroku restart 或运行 heroku restart --app application_name。
如果你没有安装它,你可以找到它的相关信息here。
【讨论】: