如何在开发中运行Rails多线程?

hak*_*nin 5 multithreading ruby-on-rails ruby-on-rails-4

我正在进行多个项目,这些项目有时会互相交谈,但遇到了一个问题,即应用程序

  1. A呼叫B(request 1,仍在运行)
  2. B呼叫A(request 2
  3. 根据request 2的结果,B响应请求1

这要求我在开发模式下运行多线程导轨。

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

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

这样的东西rails s --multi会很好,不能webrick只运行多个线程或产生更多进程吗?

也许我可以安装一个独立的gem来执行所需的操作并运行类似的东西thin run . -p 3

小智 7

彪马的Web服务器可以提供多线程和多工绑定到一个单一的本地地址。

  1. 安装美洲狮宝石:

    bundle add puma
    
    Run Code Online (Sandbox Code Playgroud)

    或者

    gem install puma
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在以下位置添加 puma 配置文件config/puma.rb

    workers 1 # 1 worker in addition to master instance (i.e. handle 2 requests concurrently).
    preload_app!
    
    Run Code Online (Sandbox Code Playgroud)
  3. 启动 Rails 服务器。

    bundle exec rails s
    
    Run Code Online (Sandbox Code Playgroud)

    Puma 自动启动并加载到配置文件中config/puma.rb

workers如果您需要同时处理 2 个以上的并发请求,请提高该值。


hak*_*nin 2

解决这个问题的一种方法是使用POW,它默认使用两个工人。

好处是我不必修改项目文件即可完成此操作,因此它可以满足我的要求。

更新:POW 的最新继承者是puma-dev,它也是零配置的。