为什么试图调用HTTP API的Ruby代码会挂起进程



我正试图调用一个api(来自控制器(,将其生成的JSON响应存储在一个变量中,然后随意访问变量值的部分(在我看来(。以下代码挂起:

在控制器中:

parsed_response = JSON.parse(HTTP.get('http://localhost:3000/api/v2/storefront/products'))
@products = parsed_response['data']

在视图中:

<%= @products %>

上面什么都不呈现,挂起了一个进程,我不得不kill -9来关闭服务器。我做错了什么,这是不是以某种方式连续快速地多次发出HTTP.get请求,从而导致进程挂起?这与#parse和#get同时在一行中调用有关吗?

(我在这里使用gem‘http’(

我的猜测是,您的服务器(puma,unicon,..(接受有限数量的并行HTTP连接。

假设你的应用程序一次只接受一个连接:

  • 您的请求localhost:3000/page_1,因此您占用了该连接。在此连接结束之前,任何人都无法连接到您的服务器
  • localhost:3000/page_1想要连接到localhost:3000/page_2,它必须等待活动连接结束。由于它无法连接,因此等待。。。直到超时或终止服务器

最新更新