我在Heroku上托管了一个NodeJS应用程序。有没有办法让我自动运行" heroku restart"每小时命令一次?
我找到了这个答案,但它看起来像Rails项目:Restart my heroku application automatically
答案 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引用不再支持的回购