Ruby / JRuby и WEBrick обслуживают запросы по одному - PullRequest
0 голосов
/ 15 июня 2010

Кто-нибудь знает, как заставить WEBrick обрабатывать более одного запроса одновременно?Я использую Ajax на своей странице для длительных задач, связанных с базой данных, и я четко вижу, что запросы обрабатываются в конвейере.

Ответы [ 4 ]

4 голосов
/ 17 июня 2010

Если вы используете JRuby, посмотрите гем GlassFish (урезанный сервер GlassFish в форме гемов), драгоценный камень Тринидад (то же самое, используя Tomcat) или различные другие опции, такие как warbler (создает файлы .war, которые вы можете запускать напрямую или развернуть на любом сервере приложений). JRuby - это самый простой способ наверняка развернуть высококонкурентное приложение на Ruby, благодаря которому параметры C Ruby выглядят довольно примитивно по сравнению с ним.

2 голосов
/ 15 июня 2010

webrick обрабатывает только один запрос за раз, что обычно хорошо для разработки.Если вы хотите, чтобы все работало параллельно, взгляните на mongrel_cluster или на удивительного единорога или пассажира конечно.

0 голосов
/ 28 мая 2013

Если вы используете rails 4, вы можете применить следующий патч, и webrick начнет обслуживать запросы одновременно.

diff --git a/railties/lib/rails/commands/server.rb b/railties/lib/rails/commands/server.rb
index e3119ec..ef04aa8 100644
--- a/railties/lib/rails/commands/server.rb
+++ b/railties/lib/rails/commands/server.rb
@@ -93,14 +93,6 @@ module Rails
       middlewares << [Rails::Rack::Debugger]  if options[:debugger]
       middlewares << [::Rack::ContentLength]

-      # FIXME: add Rack::Lock in the case people are using webrick.
-      # This is to remain backwards compatible for those who are
-      # running webrick in production. We should consider removing this
-      # in development.
-      if server.name == 'Rack::Handler::WEBrick'
-        middlewares << [::Rack::Lock]
-      end
-
       Hash.new(middlewares)
     end
0 голосов
/ 16 июня 2010

Вы не должны использовать WEBrick для длительных запросов. Вероятно, лучшим веб-сервером для этой работы будет Thin, поскольку он работает на EventMachine, что позволяет писать асинхронный код, чтобы сервер не блокировался.

...