我在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状态的最有效方法,您是否同意这需要成为后台工作?
任何有关工作更快,阅读材料和想法的宝石的参考都非常受欢迎!
答案 0 :(得分:0)
如果请求的时间超过30秒,那么请求会在您看到此处时超时。您完全依赖于另一端响应的服务器的速度。例如,如果说它本身就是1 dyno上的Heroku应用程序,那么整理应用程序可能需要10秒钟,因此只需要20秒即可测试其他URL。
我建议你将每张支票移到它自己的后台工作,然后轮询这些工作,知道他们什么时候完成并相应地更新用户界面。