如何与Rails 4同时处理请求?

弗雷德里克

我试图在Rails 4中同时服务多个请求,config.threadsafe!Puma在Rails 3中我可以很轻松地做到这一点

说我有这个控制器

class ConcurrentController < ApplicationController
  def index
    sleep 10000
  end

  def show
  end
end

我曾经能够以puma -t 2:16 -p 3000至少2个线程)启动puma并点击index,然后show仍然show正确渲染。

在Rails 4中,如果我尝试做同样的事情,Puma现在会锁定该index请求,并且show永远不会被渲染。当我Ctrl-C选择服务器时,Puma给了我这个错误:

Rack app error: #<ThreadError: Attempt to unlock a mutex which is locked by another thread>

我在这里缺少什么可以同时使用Rails 4?config.threadsafe!应该是不需要的(即使我尝试也不会有所作为)

伊利

我邀请您阅读config.threadsafe!本文中的配置选项。删除config.threadsafe!它将帮助您更好地了解的选项config.threadsafe!,特别是允许并发。

In Rails 4config.threadsafe!是默认设置的。


现在回答

在Rails 4中,默认情况下,DEV环境中的Rack :: Lock中间件将请求包装在Mutex周围。

如果要启用并发,可以设置config.allow_concurrency=true这将禁用Rack :: Lock中间件。如您对问题的另一个答复中所述,我不会删除它;在我看来,这简直就是骇客。

注意:如果您config.cache_classes=trueconfig.allow_concurrency(Rack :: Lock请求互斥体)的分配不会生效,则默认情况下允许并发请求。如果有config.cache_classes=false,则可以设置config.allow_concurrencytruefalse在DEV环境中,您希望拥有这样的环境

config.cache_classes=false
config.allow_concurrency=true

声明:这意味着,如果config.cache_classes = false(在dev env中是默认设置),那么我们就不会有并发请求。是不正确的。

附录

您可以参考此答案,它使用MRI和JRuby设置了测试并发性的实验。结果令人惊讶。MRI比JRuby快。

MRI并发性实验在GitHub上进行实验仅测试并发请求。控制器中没有竞争条件。但是,我认为实现上述文章中的示例来测试控制器中的竞争条件并不是很困难。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

节点如何同时处理多个请求?

来自分类Dev

如何让Nginx同时处理fastcgi请求?

来自分类Dev

如何同时处理多个购买请求

来自分类Dev

node.js如何处理同时的http请求?

来自分类Dev

如何同时处理两个XML请求的结果

来自分类Dev

Rails控制器操作和缓存-处理同时/重叠的请求

来自分类Dev

Node.js如何处理一个线程的同时请求?

来自分类Dev

如何为多个同时发生的事务请求正确处理JPA ObjectOptimisticLockException?

来自分类Dev

如何在python http.server中同时提供文件夹和处理POST请求

来自分类Dev

如何在python中使用线程模块来处理同时的http请求?

来自分类Dev

C#。如何在仍然上传大型请求正文的同时处理服务器响应?

来自分类Dev

Rails 4-无论请求的格式如何,如何呈现JSON?

来自分类Dev

同时处理多个请求

来自分类Dev

如何在Rails 4中向请求添加令牌?

来自分类Dev

我自己的帐户中有多个git-repo分叉(或:如何同时处理多个拉取请求?)

来自分类Dev

如何处理Rails枚举?

来自分类Dev

如何在Rails 4中处理枚举值

来自分类Dev

如何在Rails 4中处理产品/子产品

来自分类Dev

ODATA v4 批处理 - 如何在服务器上将请求作为批处理进行处理?

来自分类Dev

如何安装Prawn for Rails 4

来自分类Dev

用bs4和请求处理后如何正确打印出unicode文本?

来自分类Dev

如何在Rails API中集成批处理请求?

来自分类Dev

如何确定在处理Rails请求时调用了哪些before_filters

来自分类Dev

如何处理来自 Rails 中 gems 的网络请求的渲染 json 错误?

来自分类Dev

如何同时执行多个Guzzle请求?

来自分类Dev

如何同时执行多个Guzzle请求?

来自分类Dev

Rails使用JSON处理POST请求

来自分类Dev

Ruby on Rails和JSON请求处理

来自分类Dev

如何处理HEAD请求?

Related 相关文章

  1. 1

    节点如何同时处理多个请求?

  2. 2

    如何让Nginx同时处理fastcgi请求?

  3. 3

    如何同时处理多个购买请求

  4. 4

    node.js如何处理同时的http请求?

  5. 5

    如何同时处理两个XML请求的结果

  6. 6

    Rails控制器操作和缓存-处理同时/重叠的请求

  7. 7

    Node.js如何处理一个线程的同时请求?

  8. 8

    如何为多个同时发生的事务请求正确处理JPA ObjectOptimisticLockException?

  9. 9

    如何在python http.server中同时提供文件夹和处理POST请求

  10. 10

    如何在python中使用线程模块来处理同时的http请求?

  11. 11

    C#。如何在仍然上传大型请求正文的同时处理服务器响应?

  12. 12

    Rails 4-无论请求的格式如何,如何呈现JSON?

  13. 13

    同时处理多个请求

  14. 14

    如何在Rails 4中向请求添加令牌?

  15. 15

    我自己的帐户中有多个git-repo分叉(或:如何同时处理多个拉取请求?)

  16. 16

    如何处理Rails枚举?

  17. 17

    如何在Rails 4中处理枚举值

  18. 18

    如何在Rails 4中处理产品/子产品

  19. 19

    ODATA v4 批处理 - 如何在服务器上将请求作为批处理进行处理?

  20. 20

    如何安装Prawn for Rails 4

  21. 21

    用bs4和请求处理后如何正确打印出unicode文本?

  22. 22

    如何在Rails API中集成批处理请求?

  23. 23

    如何确定在处理Rails请求时调用了哪些before_filters

  24. 24

    如何处理来自 Rails 中 gems 的网络请求的渲染 json 错误?

  25. 25

    如何同时执行多个Guzzle请求?

  26. 26

    如何同时执行多个Guzzle请求?

  27. 27

    Rails使用JSON处理POST请求

  28. 28

    Ruby on Rails和JSON请求处理

  29. 29

    如何处理HEAD请求?

热门标签

归档