如何用JS ping一个Heroku应用程序?

ign*_*aur 2 javascript heroku

我正在Heroku上运行几个免费的单dyno应用程序,这些应用程序在空闲一段时间后会"睡眠".我有一个总是清醒的主站点,链接/利用这些有时会进入睡眠状态的其他应用程序.当我从主站点链接到正在睡眠的应用程序时,其他应用程序唤醒时会有很长的加载等待时间.

我想要做的是在用户登陆主页时唤醒所有可能正在睡眠的应用程序,有点像预加载它们,因此在用户需要时可以快速响应.

我目前$.get(...)在后台使用简单但当然控制台抛出'Access-Control-Allow-Origin'错误.我不需要任何数据或任何内容,只需要某种响应来指示应用程序已启动并正在运行.任何人都知道如何通过AJAX调用无错误地执行此操作?

(或者,如果有任何其他方式,例如通过API或其他方式)

Edw*_*its 7

这是可能的解决方案:https://coderwall.com/p/u0x3nw

由于这里不欢迎只包含链接的答案,我只会复制链接内容.


解决Heroku空闲策略的一种常用方法是设置一个脚本,每小时发送一次ping,以保持dyno活着.

您可以使用以下内容将New Relic的免费计划添加到您的帐户.

$ heroku addons:add newrelic:standard
Run Code Online (Sandbox Code Playgroud)

打开New Relic界面:

$ heroku addons:open newrelic
Run Code Online (Sandbox Code Playgroud)

在"菜单"下的"报告"部分中,查找"可用性"

添加您的URL,将ping时间设置为<1小时,您就可以开始了.

使用调度程序

或者,如果您不喜欢或想要使用New Relic,您实际上可以使用Heroku Scheduler通过Heroku本身设置保持活动的dyno ping.

例如,如果您使用的是Ruby,则可以使用Rake任务,例如:

desc "Pings PING_URL to keep a dyno alive"
task :dyno_ping do
  require "net/http"

  if ENV['PING_URL']
    uri = URI(ENV['PING_URL'])
    Net::HTTP.get_response(uri)
  end
end
Run Code Online (Sandbox Code Playgroud)

将PING_URL添加到您的Heroku环境中:

$ heroku config:add PING_URL=http://my-app.herokuapp.com
Run Code Online (Sandbox Code Playgroud)

设置调度程序:

$ heroku addons:add scheduler:standard
$ heroku addons:open scheduler
Run Code Online (Sandbox Code Playgroud)

最后一个命令应该在浏览器中打开Scheduler接口.您现在可以将dyno_ping任务设置为每小时运行一次:

$ rake dyno_ping
Run Code Online (Sandbox Code Playgroud)

(c)Aupajo的原始博客文章