【问题标题】:Processing large API call in ruby timesout在 ruby​​ 超时中处理大型 API 调用
【发布时间】:2015-01-26 03:29:34
【问题描述】:

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

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

问题是我的应用程序在处理此调用时超时。我尝试寻找一种方法来分块处理它,但找不到任何资源。另一个问题是我们没有资源来支付每天进行 100 次调用的大量 API 费用。所以我们必须能够在一次调用中处理整个请求。任何帮助将不胜感激。我们也尝试了 HTTParty gem,但也没有用。

【问题讨论】:

    标签: ruby-on-rails ruby json api


    【解决方案1】:

    我的建议是保存在磁盘上并在本地处理您的时间。

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

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

    因此,在 Ruby 中,打开这个“products.json”文件而不是执行 curl 调用。完成此过程后,您可以删除文件,这样您就知道它是否是新列表。

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

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

    【讨论】:

    • 非常感谢。在我的情况下,它比 Curl 工作得更好。抱歉,由于声誉较低,我无法接受您的回答或投票。
    • 没问题。我很高兴,不知何故你的问题得到了解决:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 2021-08-27
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    相关资源
    最近更新 更多