在Ruby中缓存DNS查询
发布时间:2020-12-17 07:10:12 所属栏目:百科 来源:网络整理
导读:我们使用 Ruby中的rest-client gem来自动测试REST API.但是我注意到,在它发出的每个请求中,它都会对主机名进行DNS查找.在本地环境中,如果使用“localhost”,则测试运行速度很快,但如果使用正确的主机名,则需要2.5倍的时间,执行大量的DNS查找. 我认为这个问题
我们使用
Ruby中的rest-client gem来自动测试REST API.但是我注意到,在它发出的每个请求中,它都会对主机名进行DNS查找.在本地环境中,如果使用“localhost”,则测试运行速度很快,但如果使用正确的主机名,则需要2.5倍的时间,执行大量的DNS查找.
我认为这个问题与rest-client无关,而是与基础Ruby网络有关.我试过要求’resolv’和’resolv-replace’,但他们没有帮助. ‘dig’报告DNS查询的TTL为1小时. 有没有办法让Ruby缓存DNS请求?我可以更改代码以明确使用IP地址,但这是解决问题的错误位置. 我正在运行Ubuntu 12.04和Ruby 1.9.3. 解决方法
您可以使用dnsruby gem将名称解析为地址,然后使用调用中的地址.
#! /usr/bin/env ruby # Gets the IP address of a host. require 'dnsruby' # gem install dnsruby first,of course def hostname_to_ip_addr(host_name) query = Dnsruby::Message.new(host_name) response = Dnsruby::Resolver.new.send_message(query) response.answer[1].address end host_name = 'cnn.com' ip_addr = hostname_to_ip_addr(host_name) puts("Host name: #{host_name},IP address: #{ip_addr}") 来自这个Gist的原始代码 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读