在nodejs中重新启动heroku dyno

时间:2014-09-02 08:15:03

标签: node.js heroku

我想重新启动nodejs应用程序以更改其IP。我如何在应用程序本身内执行此操作?我试图强制崩溃但是如果应用程序在十分钟内崩溃两次,那么heroku将在第一次崩溃后十分钟重新启动dyno。

4 个答案:

答案 0 :(得分:51)

如果您安装了Heroku CLI,则可以在应用程序的文件夹中运行heroku restart或运行heroku restart --app application_name

如果您没有安装它,可以找到有关它的信息here

答案 1 :(得分:6)

查看v3 API的this节点包装器和this api命令。

如果需要在应用程序本身内完成 ,您可能需要创建某种触发此条件的条件。

答案 2 :(得分:5)

您可以直接从heroku的网络信息中心重新启动nodejs dynos:

信息中心 - >更多 - >重新启动所有dynos

enter image description here

答案 3 :(得分:2)

使用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名称,您将重新启动应用程序下的所有dynos