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

kcugc4gi  于 2023-01-03  发布在  Ruby
关注(0)|答案(3)|浏览(138)

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

  1. A调用B(request 1,仍在运行)
  2. B调用A(request 2
    1.根据request 2的结果,B响应请求1
    这需要我在开发模式下运行多线程的rails。
    我知道我可以用彪马或类似的东西来设置它,但是......难道没有更简单的方法吗?
    我想避免改变项目中的任何东西(添加宝石,配置文件...)。
    rails s --multi这样的东西会很好,webrick不能只运行多个线程或产生更多的进程吗?
    我是否可以安装一个独立的gem来完成我所需要的工作,并运行类似thin run . -p 3的东西?
wh6knrhe

wh6knrhe1#

pumaweb服务器可以提供多线程和绑定到单个本地地址的多个工作线程。
1.安装puma gem:

bundle add puma

gem install puma

1.在config/puma.rb添加一个puma配置文件:

workers 1 # 1 worker in addition to master instance (i.e. handle 2 requests concurrently).
preload_app!

1.启动Rails服务器。

bundle exec rails s
  • Puma自动启动并加载到config/puma.rb的配置文件中。*

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

gstyhher

gstyhher2#

解决这个问题的一种方法是使用POW,它在默认情况下使用两个工作线程。
好的方面是我不必修改项目文件来完成它,所以它满足了我的要求。

更新:POW的最新后继产品是puma-dev,它也是零配置。

zzwlnbp8

zzwlnbp83#

我目前的解决方案是使用Foreman和一个Procfile在不同的端口上运行我的应用程序的两个副本,这是一个超级笨拙的解决方案,你必须配置你的B服务来向次要端口发出请求。

相关问题