我的单线程Rails应用程序如何处理并发请求?

时间:2012-04-01 07:16:03

标签: ruby-on-rails ruby concurrency heroku rack

我在Heroku Cedar上以单线程模式运行单线程Rails应用程序。

当我执行一个超过一分钟的巨大POST请求(文件上传)时,我可以同时执行其他GET请求。

Heroku支持向我保证,他们的路由层不存储请求,然后立即发送所有请求(这是许多代理的行为,例如nginx)。他们坚持认为我的应用正在处理并发请求。

这里发生了什么?

1 个答案:

答案 0 :(得分:6)

Thin是在EventMachine之上构建的,它提供基于事件的IO。

这意味着Thin会同时接收您的POST请求,同时提供GET请求。上传POST数据后,Thin继续将其传递给Rails(同步处理它并阻止其他请求直到完成)。