Я пытаюсь одновременно обслуживать несколько запросов в Rails 4, что мне очень легко удалось сделать с config.threadsafe!
и Puma
в Rails 3.
Скажем, у меня есть этот контроллер
class ConcurrentController < ApplicationController
def index
sleep 10000
end
def show
end
end
Раньше я мог просто запускать puma с puma -t 2:16 -p 3000
(минимум 2 потока) и нажимать index
, а затем show
, и при этом show
рендерился правильно.
В Rails 4, если я попытаюсь сделать то же самое, Puma теперь блокирует запрос index
, и show
никогда не будет отрисован. Когда я нажимаю Ctrl-C
для сервера, Puma выдает мне эту ошибку:
Rack app error: #<ThreadError: Attempt to unlock a mutex which is locked by another thread>
Что мне здесь не хватает, чтобы заставить параллелизм работать с Rails 4? config.threadsafe!
предполагается, что он не нужен (и не имеет значения, даже если я попытаюсь)
config.cache_classes = false
вconfig/environments/development.rb
по умолчанию, но не сталкиваюсь с этой проблемой. - person kbridge4096   schedule 14.05.2017-w 2
. Это приведет к запуску двух экземпляров приложения для обработки запросов. - person Joshua Pinter   schedule 20.08.2019