【发布时间】:2015-07-09 12:37:33
【问题描述】:
我会将这个问题分为两部分。
第 1 部分:
Rails 如何为同一操作提供并发请求?
Rails 是在不同的线程中处理并发请求还是在队列中服务?
第 2 部分:
为什么要问?
我做了一个非常具体的项目。现在我考虑在必要时更改应用程序架构。
问题
前言
我有带有动作计算的控制器。
好像是这样的:
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
calculate.rb 是包含脚本,它使用文件“first_player_code.rb”和“second_player_code.rb”。
此脚本生成 JSON 文件作为结果并将其发送到浏览器。
更多信息
“first_player_code.rb”和“second_player_code.rb”包含 Ruby 类。
在“calculate.rb”中,我需要这些文件并从这些文件中的类制作对象。
我只是没有找到另一种方法(不使用文件)。
问题本身
是否存在同步问题?
【问题讨论】:
-
Rails 不处理并发请求。一次只有一个。这是 Web 服务器启动更多线程或工作线程(或使用事件 I/O)以实现某些并发性的工作
-
问题是:什么运行你的 Rails 应用程序?
-
如果我理解正确,我不能依赖 Rails(standart) 并行性(如果我自己没有意识到)。我将在主帖中添加有关脚本的更多信息。
-
你在说什么“标准并行”?没有。 Rails 作为一个框架,按顺序处理请求,一个接一个。当然,可能会有多个 Rails 实例同时运行,但这不属于 Rails 本身的业务范围。
-
看来我对 Rails 的理解有误。您能否推荐一些资源,让我了解 Rails 的工作原理?
标签: ruby-on-rails ruby multithreading