在Heroku上优化HTTP状态请求(网络:HTTP)

时间:2014-07-28 13:13:46

标签: ruby-on-rails ruby heroku http-status-codes net-http

我在heroku上运行一个应用程序,用户可以在其中获取可以粘贴到表单上的多个URL的HTTP状态(200,301,404等)。

虽然它在我的本地rails服务器上运行良好,但当我在heroku上传时,我无法检查超过30个URL(我想检查200),因为heroku在30秒后超时给我一个H12 Error

  def gethttpresponse(url)
  httpstatusarray = Hash.new

    uri = URI.parse(url)
    http = Net::HTTP.new(uri.host, uri.port) 
    request = Net::HTTP::Get.new(uri.request_uri)
    response = http.request(request)
    httpstatusarray['url'] = url
    httpstatusarray['status'] = response.code               
   return httpstatusarray

  end

目前我使用Net:HTTP,看起来非常沉重。有什么我可以更改我的代码或任何其他宝石,我可以用来以更有效(快速)的方式获取HTTP状态/标题?

我注意到了 response.body包含我不需要的页面的完整HTML源代码。这是否默认加载在响应对象上?

如果这是检查HTTP状态的最有效方法,您是否同意这需要成为后台工作?

任何有关工作更快,阅读材料和想法的宝石的参考都非常受欢迎!

1 个答案:

答案 0 :(得分:0)

如果请求的时间超过30秒,那么请求会在您看到此处时超时。您完全依赖于另一端响应的服务器的速度。例如,如果说它本身就是1 dyno上的Heroku应用程序,那么整理应用程序可能需要10秒钟,因此只需要20秒即可测试其他URL。

我建议你将每张支票移到它自己的后台工作,然后轮询这些工作,知道他们什么时候完成并相应地更新用户界面。