gpt4 book ai didi

ruby-on-rails - 阻塞 IO/Ruby on Rails

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

我正在考虑使用 Rails 编写 Web 应用程序。用户发出的每个请求都取决于调用的外部 API。这个外部 API 可能随机地非常慢(2-3 秒),因此显然这会影响单个请求。

在代码等待外部API返回的这段时间里,是否会阻塞进一步的用户请求?

只是为了进一步澄清,因为似乎有些困惑,这是我期待的模型:

  1. Alice 向我的网络应用程序发出请求。为此,调用 API 服务器 A。 API 服务器 A 很慢,需要 3 秒才能完成。
  2. 在 Rails 应用程序调用 API 服务器 A 的这段等待时间内,Bob 发出了一个请求,该请求必须向 API 服务器 B 发出请求。

Ruby (1.9.3) 解释器(或 Rails 3.x 框架中的某些东西)是否会阻止 Bob 的请求,要求他等到 Alice 的请求完成?

最佳答案

如果您只使用一个单线程、非事件服务器(或者不对事件服务器使用事件 I/O),是的。在使用 Thin 的其他解决方案中和 EM-Synchrony将避免这种情况。

详细说明,根据您的更新:

不,Ruby 和 Rails 都不会导致您的应用程序阻塞。但是,您遗漏了将要使用的部分:Web 服务器。您要么需要多个进程、多个线程,要么需要一个事件服务器,同时使用事件 I/O 库执行 Web 服务请求。

@alexd 描述了使用多个进程。我个人更喜欢事件服务器,因为我不需要提前知道/猜测我可能有多少并发请求(或使用根据负载启动进程的东西。)单个 nginx 面向单个 进程的进程可以处理大量并行请求。

关于ruby-on-rails - 阻塞 IO/Ruby on Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8947838/

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