Ruby on rails Rails如何服务并发请求
我将把这个问题分成两部分。Ruby on rails Rails如何服务并发请求,ruby-on-rails,ruby,multithreading,Ruby On Rails,Ruby,Multithreading,我将把这个问题分成两部分。 第一部分: Rails如何为同一操作提供并发请求? Rails是在不同线程中提供并发请求,还是在队列中提供并发请求 第二部分: 我为什么要问? 我做了一个非常具体的项目。现在我考虑在必要时更改应用程序架构 问题: 前言 我有一个带动作计算的控制器。 似乎是这样的: def calculate first_player_code = Code.find(params[:first_player_id]) second_player_code
第一部分:
Rails如何为同一操作提供并发请求?
Rails是在不同线程中提供并发请求,还是在队列中提供并发请求 第二部分:
我为什么要问?
我做了一个非常具体的项目。现在我考虑在必要时更改应用程序架构 问题: 前言
我有一个带动作计算的控制器。 似乎是这样的:
def calculate
first_player_code = Code.find(params[:first_player_id])
second_player_code = Code.find(params[:second_player_id])
File.open("first_player_code.rb", "w"){|file| file << first_player_code}
File.open("second_player_code.rb", "w"){|file| file << second_player_code}
system("ruby calculate.rb")
end
def计算
first\u player\u code=code.find(参数[:first\u player\u id])
second\u player\u code=code.find(参数[:second\u player\u id])
File.open(“first|player|code.rb”,“w”){| File | File您通常会配置这样的web服务器,即使用线程并发处理请求并将其传递给Rails应用程序。使用常规MRI ruby时,不可能实现真正的线程化,因为全局解释器锁会阻止一次运行多个线程
对于长时间运行的进程,您应该尝试通过将这些进程转移到后台作业来防止阻塞。这是一个很好的选择
另请参见Rails不处理并发请求。一次只处理一个请求。这是web服务器的工作,以启动更多线程或工作线程(或使用事件I/O)来实现一些并发。问题是:什么运行Rails应用程序?如果我理解正确,我不能依赖Rails(standart)并行性(如果我自己没有意识到)。我将在主帖子中添加有关脚本的更多信息。什么是“标准并行性”你在说什么?没有。Rails作为一个框架,一个接一个地按顺序处理请求。当然,可能有几个Rails实例同时运行,但这不属于Rails本身的业务范围。似乎我对Rails有错误的理解。你能提供一些资源,让我了解Rail是如何运行的吗s有效?谢谢,但我认为,最好的方法是重新组织我的应用程序的架构,尽量不使用文件。