gpt4 book ai didi

ruby - 在 Ruby 中缓存 DNS 查询

转载 作者:数据小太阳 更新时间:2023-10-29 07:17:55 25 4
gpt4 key购买 nike

我们使用 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

关于ruby - 在 Ruby 中缓存 DNS 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10596616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com