gpt4 book ai didi

ruby - Ruby 是否支持没有第三方库的非阻塞 HTTP 请求?

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

我正在编写一个 API 来访问我的一台服务器上的资源。此 API 的一部分将发出 HTTP 请求。以良好软件设计的名义,我不希望我的 API 被阻塞。

我是 Ruby 的新手,但在 Java 中我会提供一个异步 API 来返回响应的 Futures。在 JavaScript 中,我会在我的方法中使用回调。

我已经搜索了其他 Stack Overflow 问题,并且 https://github.com/eventmachine/em-http-request似乎做我想做的事。但是,我对依赖第三方库犹豫不决。是否有 Ruby 原生方法来解决这个问题,还是大多数开发人员依赖第三方库?

最佳答案

根据我的测试,MRI 确实支持仅通过使用线程的非阻塞 HTTP 请求。由于 GIL,线程在 Ruby 中并不总是允许并行,但 net/http 似乎是异常(exception)之一:

require 'net/http'
require 'benchmark'

uri = URI('http://stackoverflow.com/questions/30899019/')

n = 10
Benchmark.bm do |b|
b.report { n.times { Net::HTTP.get(uri) } }
b.report { threads = Array.new(n) { Thread.new { Net::HTTP.get(uri) } }; threads.each(&:join) }
end
# user system total real
# 0.010000 0.010000 0.020000 ( 0.102024)
# 0.020000 0.010000 0.030000 ( 0.025904)

关于ruby - Ruby 是否支持没有第三方库的非阻塞 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30899019/

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