如何为Hanami应用程序配置Puma?

问题描述 投票:2回答:1

我有一个Hanami 1.3.3应用程序,应将Puma作为生产Web服务器运行。我想在集群模式下使用puma并正确使用preload_app。现在,我正在努力使用正确的Puma配置。我知道,每个子进程(工作人员)都必须拥有自己的新鲜DB连接,redis连接等。我的应用程序使用多个数据库连接,redis,sidekiq。主数据库通过hanami-model处理,其他数据库通过pg-gem处理(连接在class::initialize处设置)。

处理此问题的正确的hanami方法是什么?

这里是一种方法:

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

ruby rack puma hanami hanami-model
1个回答
2
投票

[在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

以下信息可帮助我得出结论:

puma and rails

definition of Hanami.boot

definition of Hanami.disconnect

© www.soinside.com 2019 - 2024. All rights reserved.