Heroku休眠问题

Heroku休眠问题_第1张图片
pic.jpg

前言

在使用Heroku部署应用时,都会遇到一个问题,就是免费的Heroku,在30分钟之内没有访问的话,应用会进入休眠,如果你的应用有一个时间间隔的轮询或者你的应用需要做一些后台操作,这时,会被Heroku强行给休眠。只有当下次有访问时,应用才会被唤醒。而且,还有一个限制就是一天之内最长存活时间不能大于18个小时,所以当前问题就是要解决如何在18个小时的限制内合理的让应用存活。

正文

先说一个比较省时省力的方法,就是每隔一段时间,发一个请求。博主之前使用的是360网站服务监控,注册完成后进入控制台,选择HTTP监控,创建一个监控项,选择HTTP/HTTPS监控,可以监控多个网站,自定义请求方法。当然这个方法符合大多数应用的需求了。这个方法比较的简单,就不细说了,而且这个时间间隔最长的为60分钟,感觉有点短,需求有点不符合博主的需求。

现在说说第二种方法,这种方法是要科学上网的(不知道这个文章什么时候会被封).可定时候比较长,可以一天,一周。使用也是比较的简单,点这里进入界面后,点转到google表格,在B1格填上1,如下图(博主的有运行过脚本,所以是3):

Heroku休眠问题_第2张图片
image.png

点工具-->脚本编译器,在myFunction方法里填上以下代码

var d = new Date();
  var hours = d.getHours();
  var currentTime = d.toLocaleDateString();
  var counter = SpreadsheetApp.getActiveSheet().getRange('B1').getValues();
 
  if (hours <= 6 && hours >= 22) {
    var response = UrlFetchApp.fetch("这里填写你要请求的地址");
    SpreadsheetApp.getActiveSheet().getRange('A' + counter).setValue('Visted at ' + currentTime + " " + hours + "h");
    SpreadsheetApp.getActiveSheet().getRange('B1').setValue(Number(counter) + 1);
  }

选择修改-->当前项目触发器,选择好了保存,如果遇到下面的错误,解决方法:点这里。

xxx needs your permission to access your data on Google

最后要保存,保存好了以后这个代码就会以你设置的时间运行,上面的代码博主设置的是晚上22点到早上6点前,这个时候访问。

参考文章:

Keep free Heroku app awake during a specific period using Google App Script in 2017

6 Easy Ways to Prevent Your Heroku Node App From Sleeping

Ps:还有什么不明白的,可以私信博主。

你可能感兴趣的:(Heroku休眠问题)