在nodejs中重新启动heroku dyno

我想重新启动一个nodejs应用程序来改变它的ip。 我应该怎么做这个应用程序本身? 但是如果应用程序在十分钟内崩溃两次,我尝试强制崩溃,那么在第一次崩溃后十分钟,heroku将重新启动测功机。

看看这个节点包装的v3 API和这个 api命令。

你可能需要创build一些触发条件,如果真的需要从应用程序本身完成。

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

如果你没有安装它,你可以在这里find关于它的信息 。

您可以从heroku的web仪表板重新启动nodejs dynos:

仪表板 – >更多 – >重新启动所有的dynos

在这里输入图像描述

使用Heroku v3 API可以使用请求节点模块

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

还有一个节点包装提供了类似的经验,但是文档logging很差,无论如何都需要理解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$$端点将删除该应用程序。 这是来自个人的经验

  • 对于上述任何一个,如果你省略了dynamic名称,你将重新启动应用程序下的所有dynamic