2014-08-29 4 views
4

У меня есть 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"} 

Когда я переключаюсь на thin в моей Gemfile и сделать запрос все это запирает. Я читал в нескольких местах, что тонкий может обрабатывать одновременные запросы, но я не могу заставить его работать.

Я начинаю пуму, просто запуская bundle exec rails server. Для тонких я пробовал bundle exec rails server и несколько конфигураций, таких как bundle exec thin start -a 127.0.0.1 -threaded. Кажется, что ничто не мешает тонкой блокировке.

Как я могу получить тонкие, чтобы принимать одновременные запросы?

+0

Я это работает просто отлично здесь. Добавление «тонкой» жемчужины позволяет вам выполнять «рельсы s», и вы увидите, когда сервер начнет его, говорит «Загрузка Thin». Я проверяю параллелизм с 'ab', поскольку curl выполняет только одиночные запросы. – Anthony

+0

Возможно, вы забыли использовать две тире? '--threaded Call the Rack application in threads [experimental]' – phoet

+0

hey @David загрузил бы мой примерный проект и показывая вам, что выход 'ab' будет достаточным здесь? – Anthony

ответ

0

Я была такая же проблема, и я должен был запустить сервер как этот

bundle exec thin start -a 127.0.0.1 --threaded -e production