У меня есть приложение Hanami 1.3.3, которое должно работать с Puma в качестве рабочего веб-сервера. Я хочу использовать Puma в режиме кластера и правильно использовать preload_app. Сейчас я борюсь с правильным конфигом Puma. Я знаю, что каждый дочерний процесс (рабочий) должен иметь свое собственное fre sh DB-соединение, redis-соединение и др. c. Мое приложение использует несколько db-соединений, redis, sidekiq. Основные БД обрабатываются с помощью модели hanami, другие БД обрабатываются непосредственно с помощью pg-gem (соединения устанавливаются на class::initialize
).
Какой правильный способ Ханами справиться с этим?
Вот один из подходов:
workers 4
threads 1, 8
preload_app!
rackup DefaultRackup
port 2300
environment 'production'
on_worker_boot do
require_relative "config/environment"
Hanami.boot
end
Это правильно? Для меня это нехорошо.
Следит ли лучше?
# ...
on_worker_boot do
Hanami::Model.disconnect # but what happens to the opened db-connections of parent-process?
Hanami::Model.load!
# redis??
# sidekiq??
end
Thx