我正在处理多个项目,这些项目有时会互相交谈,我遇到了一个问题,即应用程序
- A调用B(
request 1
,仍在运行) - B调用A(
request 2
)
1.根据request 2
的结果,B响应请求1
这需要我在开发模式下运行多线程的rails。
我知道我可以用彪马或类似的东西来设置它,但是......难道没有更简单的方法吗?
我想避免改变项目中的任何东西(添加宝石,配置文件...)。
像rails s --multi
这样的东西会很好,webrick
不能只运行多个线程或产生更多的进程吗?
我是否可以安装一个独立的gem来完成我所需要的工作,并运行类似thin run . -p 3
的东西?
3条答案
按热度按时间wh6knrhe1#
pumaweb服务器可以提供多线程和绑定到单个本地地址的多个工作线程。
1.安装puma gem:
或
1.在
config/puma.rb
添加一个puma配置文件:1.启动Rails服务器。
config/puma.rb
的配置文件中。*如果您需要同时处理2个以上的并发请求,请增大
workers
的值。gstyhher2#
解决这个问题的一种方法是使用POW,它在默认情况下使用两个工作线程。
好的方面是我不必修改项目文件来完成它,所以它满足了我的要求。
更新:POW的最新后继产品是puma-dev,它也是零配置。
zzwlnbp83#
我目前的解决方案是使用Foreman和一个Procfile在不同的端口上运行我的应用程序的两个副本,这是一个超级笨拙的解决方案,你必须配置你的B服务来向次要端口发出请求。