1

我已经根据 heroku 手册设置了我的 puma Web 服务器:使用 Puma Web Server 部署 Rails 应用程序

config/puma.rb

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 2)
threads threads_count, threads_count

preload_app!

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'development'

on_worker_boot do
  ActiveRecord::Base.establish_connection
end

Procfile包含:

web: bundle exec puma -C config/puma.rb

现在,当我尝试访问sleep 10延迟响应的操作然后尝试访问其他操作时,我的理解是 Puma 将同时处理这两个请求(因为我有 2 个工作人员)。但相反,它等待第一个休眠的请求完成,然后继续进行第二个请求。我错过了什么吗?

我的设置是:

  • 红宝石 2.2.4

  • 导轨 4.2.0

编辑:

好的,所以我发现在 Heroku 上它可以工作,所以问题是,为什么它在开发模式下不起作用?

4

1 回答 1

2

rails s不使用 Procfile,你可能想看看使用工头之类的工具:https ://github.com/ddollar/foreman

更新:这是解决方案:

config.allow_concurrency = true在 Rails 开发配置中。

于 2016-08-06T22:31:09.707 回答