我试图在api中显示一个数字,但我希望我的页面加载速度更快。所以,我想每隔5分钟从api获取一个号码,然后将该号码加载到我的页面。这就是我所拥有的。
get '/' do
x = Numbersapi.new
@number = x.number
:erb home
end
这样可以正常工作,但从api获取该数字需要一段时间,这意味着我的页面需要一段时间才能加载。我希望提前查看这个数字,然后每隔5分钟查看一次。我尝试过使用线程和进程,但我似乎无法弄明白。我还很擅长编程。
答案 0 :(得分:1)
这是一种在单独的线程中获取数据的简单方法。在控制器操作之外的某处,触发异步循环:
Data = {}
numbers_api = Numbersapi.new
Thread.new do
Data[:number] = numbers_api.number
sleep 300 # 5 minutes
end
然后在您的控制器操作中,您只需引用Data[:number]
,即可获得最新值。
但是如果你正在部署它,你应该使用像Resque或Sidekiq这样的宝石;它将跟踪故障并且可能更加优化