javascript - 如何通过 JS 的 ping 唤醒 Heroku 应用程序?

标签 javascript heroku

我在 Heroku 上运行了几个免费的单 dyno 应用程序,这些应用程序会在闲置一段时间后进入“ sleep ”状态。我有一个始终处于清醒状态的主站点,并链接/利用这些有时会休眠的其他应用程序。当我从主站点链接到休眠应用程序时,加载等待时间很长,而另一个应用程序会唤醒。

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

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

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

最佳答案

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

由于这里不欢迎仅包含链接的答案,因此我将复制链接内容。


解决 Heroku 空闲策略的一种常见方法是设置一个脚本,每小时发送一次 ping,以保持 dyno 处于事件状态。

您可以使用以下方法将 New Relic 的免费计划添加到您的帐户。

$ heroku addons:add newrelic:standard

打开New Relic界面:

$ heroku addons:open newrelic

在“菜单”下的“报告”部分中,找到“可用性”。

添加您的 URL,将 ping 时间设置为 < 1 小时,一切就绪。

使用调度器

或者,如果您不喜欢或不想使用 New Relic,您实际上可以使用 Heroku Scheduler 通过 Heroku 本身设置一个 keep-alive 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

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

$ heroku config:add PING_URL=http://my-app.herokuapp.com

设置调度程序:

$ heroku addons:add scheduler:standard
$ heroku addons:open scheduler

最后一条命令应该会在您的浏览器中打开调度程序界面。您现在可以将 dyno_ping 任务设置为每小时运行一次:

$ rake dyno_ping

(c) Aupajo 的原创博文

关于javascript - 如何通过 JS 的 ping 唤醒 Heroku 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18518455/

相关文章:

javascript - React Native - 无法使用 index.js 文件分离组件和容器 - 重新导出模块

javascript - 如何使用正则表达式获取 Vimeo 的 videoId?

javascript - Protractor 浏览器在 onPrepare 中未定义

javascript - 上一个和下一个按钮

authentication - 水平缩放laravel应用程序?

javascript - map 框中的旋转点倾斜

ruby-on-rails - 关于dynos数量的建议

AngularJS 持续部署工具

ruby-on-rails - Rails 3 迁移 : boolean (mysql vs postgreSQL)

ruby-on-rails - rails : Starting Sidekiq on Heroku