ruby-on-rails - 如何在开发中运行 Rails 多线程?

标签 ruby-on-rails multithreading ruby-on-rails-4

我正在处理一个有时会互相交谈的多个项目,但我遇到了一个应用程序问题

  • A 调用 B ( request 1 ,仍在运行)
  • B 调用 A ( request 2 )
  • 基于 request 2的结果,B响应请求1

  • 这需要我在开发模式下运行多线程 rails。

    我知道我可以使用 puma 或类似的东西来设置它,但是......真的没有更简单的方法吗?

    我想避免更改项目中的任何内容(添加 gem、配置文件..)。

    rails s --multi会很好,不能webrick只是使用多个线程运行或产生更多进程?

    我可以安装一个独立的 gem 来做我需要的事情并运行类似 thin run . -p 3 的东西吗? ?

    最佳答案

    puma Web 服务器可以提供绑定(bind)到单个本地地址的多线程和多个工作人员。

  • 安装 puma gem:
    bundle add puma
    

    或者
    gem install puma
    
  • config/puma.rb 添加 puma 配置文件:
    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 的值如果您需要同时处理 2 个以上的并发请求。

    关于ruby-on-rails - 如何在开发中运行 Rails 多线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45311053/

    相关文章:

    ruby-on-rails - 如何检查 Ruby View 中的对象是否为 nil?

    ruby-on-rails - 在局部文件中本地定义的变量对于调用的 erb 模板是否也可见?

    c# - 在 C# 中同步线程

    ruby - 在 Rails 4 中写入流时如何使用 Rspec 和 ActionController::Live 进行测试?

    ruby-on-rails - 为什么 "bundle install"是一个 gem 而不是 "gem install"用于 rails 3 应用程序?

    ruby-on-rails - 删除记录时的 SystemStackError(堆栈级别太深)

    java - 两个线程执行两个 `synchronized` 方法?

    multithreading - 自旋锁是免费的吗?

    javascript - 是什么导致 Bootstrap 模式不停留在屏幕上?

    ruby-on-rails - 通配符路由的 Rspec 路由测试失败