我在heroku上运行一个应用程序,用户可以获得几个url的HTTP状态(200,301,404等),他们可以粘贴到表单上。
虽然它在我的本地rails服务器上运行良好,但当我将其上传到heroku时,我无法检查超过30个url(我想检查200个),因为heroku超时30秒后给我一个H12错误。
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源代码。这是默认情况下加载到响应对象上的吗?
任何关于宝石的参考,工作更快,阅读材料和思想更受欢迎!
如果一个请求花费的时间超过30秒,那么这个请求就超时了,如图所示。这完全取决于另一端服务器的响应速度。例如,假设它本身是一个Heroku应用程序,那么它可能需要10秒来解除应用程序,因此只剩下20秒来测试其他url。
我建议您将每个检查移动到它自己的后台作业,然后轮询作业,以知道它们何时完成并相应地更新UI