在ruby超时中处理大型API调用

时间:2015-01-26 03:29:35

标签: ruby-on-rails ruby json api

我正在使用外部api为我的ruby rails app。 Api调用是获取超过8000种产品的详细信息,然后更新到我们的rails应用程序模型。以下是我的api电话:

http = Curl.get("https://myurl.com/resources/Product/?format=json&limit=8000") do|http|
end
puts http.body_str

问题是我的应用在处理此通话时超时。我试图寻找一种方法来处理这个块,但无法找到任何资源。另一个问题是我们没有资源支付大额API费用来每天拨打100个电话。因此,我们必须能够在一次通话中处理整个请求。任何帮助将不胜感激。我们也尝试了HTTParty gem,但这也没有用。

1 个答案:

答案 0 :(得分:0)

我的建议是在本地保存在磁盘和处理过程中。

例如:创建一个每日调用脚本的cron作业:

wget https://myurl.com/resources/Product/?format=json&limit=8000 -O products.json

所以,在Ruby中,打开这个" products.json"文件而不是卷曲调用。在此过程之后,您可以删除该文件,以便知道它是否是新列表。

JSON.parse(IO.read("products.json"))

OR

File.open("products.json", "r") { |f| JSON.load(f) }