自动重启Heroku NodeJS应用

时间:2016-03-11 02:07:37

标签: node.js heroku

我在Heroku上托管了一个NodeJS应用程序。有没有办法让我自动运行" heroku restart"每小时命令一次?

我找到了这个答案,但它看起来像Rails项目:Restart my heroku application automatically

2 个答案:

答案 0 :(得分:1)

是的,请使用Heroku SDK for Node.js

类似的东西:

heroku.apps('my-app').dynos().restartAll()

应该做的伎俩。所有的dyno文档都可以在这里找到:https://github.com/heroku/node-heroku-client/blob/master/docs/dyno.md。您可以使用Heroku调度程序运行预定脚本。

我必须警告你,这绝对不是你做任何事情的最佳方式。如果您对问题提供更深入的了解,我相信我们可以建议比重新启动您的dynos更合适的事情。

答案 1 :(得分:0)

使用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

  • The other question引用不再支持的回购