У меня есть 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
. Кажется, что ничто не мешает тонкой блокировке.
Как я могу получить тонкие, чтобы принимать одновременные запросы?
Я это работает просто отлично здесь. Добавление «тонкой» жемчужины позволяет вам выполнять «рельсы s», и вы увидите, когда сервер начнет его, говорит «Загрузка Thin». Я проверяю параллелизм с 'ab', поскольку curl выполняет только одиночные запросы. – Anthony
Возможно, вы забыли использовать две тире? '--threaded Call the Rack application in threads [experimental]' – phoet
hey @David загрузил бы мой примерный проект и показывая вам, что выход 'ab' будет достаточным здесь? – Anthony