Как настроить Puma для приложения Hanami? - PullRequest
3 голосов
/ 03 апреля 2020

У меня есть приложение 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

1 Ответ

3 голосов
/ 09 апреля 2020

С помощью парня по hanami / chat я получил следующую конфигурацию Puma:

require_relative './environment'
workers 2

threads_count = 5
threads threads_count, threads_count

daemonize true

preload_app!

rackup      DefaultRackup
port        2300
environment 'production'

on_worker_boot do
  Hanami.boot
end

Вот информация, которая помогла мне прийти к выводу:

пума и рельсы

определение Hanami.boot

определение Hanami.disconnect

...