在特定时间间隔内获取 Ruby 的 Rack 应用程序的数据
我有一个非常简单的 Ruby Rack 应用程序,它从 Web 服务检索信息并将其转换为 JSON。
#config.ru
my_result = fetch_information_from_webservice
map '/feed' do
run Proc.new {|env| [200, headers... , my_result.to_json]}
end
因此,当启动服务器时,它会获取信息,将其缓存并使用 /feed
显示结果。 我想做的是时不时地重新加载 fetch_information_from_webservice
重新分配 my_result
一个全新的值
所以比方说,每 30 分钟服务器就会再次获取外部信息,将其缓存到 /feed
并非常快速地显示,而不打扰用户。
有没有办法无需创建外部脚本并将其加载为 cron 作业(例如在自己的 configu.ru
文件中声明?
提前致谢)
I have a very simple ruby rack app which retrieves information from a webservice and converts it to JSON.
#config.ru
my_result = fetch_information_from_webservice
map '/feed' do
run Proc.new {|env| [200, headers... , my_result.to_json]}
end
So when starting the server it fetches the information, cache it and display the results withing /feed
.
What I would like to do is from time to time reload that fetch_information_from_webservice
re-assigning my_result
a brand new value
So let's say, every 30 min the server will fetch external information again, cache it to the /feed
and display it very quicly without bother the user.
Is there any way to do it without having to create an external script and load it as a cron job (like declaring inside the own configu.ru
file?
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Rufus Scheduler 似乎完全符合我的要求,它非常整洁且运行流畅。
我必须做的一件事是通过 Sinatra 而不是纯 Rack 运行应用程序,因为原始 Rack 应用程序不会在 /feed 调用上相应地刷新结果,但使用 Sinatra 效果很好。
Rufus Scheduler seems to do exactly what I wanted it's very neat and runs smoothly.
one thing I've had to do is run the app through Sinatra instead of pure rack since the raw Rack app wasn't refreshing the results accordingly on the /feed call, but with Sinatra is works pretty well.