我有一个带有简单控制器的Rails 4.1应用程序,它可以传输响应:
class ServerSentEventsController < ApplicationController
include ActionController::Live
def index
response.headers['Content-Type'] = 'text/event-stream'
sse = ServerSentEvent.new(response.stream)
begin
loop do
sse.write(time: Time.now)
sleep 1
end
rescue IOError
# When the client disconnects, we'll get an IOError on write
ensure
sse.close
end
end
end
当我将puma添加到我的gemfile并使用curl
针对此路由发出请求时,我得到了预期的流式响应:
curl -i 'http://localhost:3000/sse'
<!-- truncated headers output -->
data: {"time":"2014-08-29 05:16:00 +0100"}
data: {"time":"2014-08-29 05:16:01 +0100"}
data: {"time":"2014-08-29 05:16:02 +0100"}
当我切换到我的gemfile中的thin并发出请求时,整个事情都会锁定。我已经在多个地方读过,瘦可以处理并发请求,但我似乎无法使它工作。
我只是通过运行bundle exec rails server
来启动美洲狮。对于瘦身我已尝试bundle exec rails server
和多个配置,如bundle exec thin start -a 127.0.0.1 -threaded
。似乎没有什么能阻止锁定。
如何变瘦以接受并发请求?
答案 0 :(得分:0)
我有同样的问题,我不得不像这样启动服务器
bundle exec thin start -a 127.0.0.1 --threaded -e production