Я работаю над несколькими проектами, которые иногда общаются друг с другом, и я столкнулся с проблемой, когда приложение
- A вызывает B (
request 1
, все еще работает) - B вызывает A (
request 2
) - на основании результата
request 2
B отвечает на запрос 1
Для этого мне нужно запустить многопоточные рельсы в режиме разработки.
Я знаю, что могу настроить это с помощью puma или чего-то в этом роде, но ... Неужели нет более простого способа?
Я бы не хотел ничего менять в проекте (добавлять гемы, файлы конфигурации ..).
Что-то вроде rails s --multi
было бы неплохо, не может ли webrick
просто работать с несколькими потоками или порождать больше процессов?
Могу ли я установить автономный гем, чтобы делать то, что мне нужно, и запускать что-то вроде thin run . -p 3
?
3 ответа
Веб-сервер puma может обеспечивать многопоточность и несколько рабочих процессов, привязанных к одному локальному адресу.
Установите жемчужину пумы:
bundle add puma
или
gem install puma
Добавьте файл конфигурации puma в
config/puma.rb
:workers 1 # 1 worker in addition to master instance (i.e. handle 2 requests concurrently). preload_app!
Запустите сервер Rails.
bundle exec rails s
Puma автоматически запускается и загружает файл конфигурации по адресу
config/puma.rb
.
Увеличьте значение для workers
, если вам нужно обрабатывать более двух одновременных запросов одновременно.
Один из способов решить эту проблему - использовать POW, который по умолчанию использует двух рабочих процессов.
Приятно то, что мне не нужно изменять файлы проекта, чтобы это соответствовало моим требованиям.
Мое текущее решение, которое очень сложно, состоит в том, чтобы использовать Foreman и Procfile для запуска двух копий моего приложения. на разные порты. Вам нужно будет настроить службу B для отправки запросов на вторичный порт.
Похожие вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.