我正在Heroku上运行几个免费的单dyno应用程序,这些应用程序在空闲一段时间后会"睡眠".我有一个总是清醒的主站点,链接/利用这些有时会进入睡眠状态的其他应用程序.当我从主站点链接到正在睡眠的应用程序时,其他应用程序唤醒时会有很长的加载等待时间.
我想要做的是在用户登陆主页时唤醒所有可能正在睡眠的应用程序,有点像预加载它们,因此在用户需要时可以快速响应.
我目前$.get(...)在后台使用简单但当然控制台抛出'Access-Control-Allow-Origin'错误.我不需要任何数据或任何内容,只需要某种响应来指示应用程序已启动并正在运行.任何人都知道如何通过AJAX调用无错误地执行此操作?
(或者,如果有任何其他方式,例如通过API或其他方式)
这是可能的解决方案: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的原始博客文章
| 归档时间: |
|
| 查看次数: |
2663 次 |
| 最近记录: |