IO::EAGAINWaitReadable:资源暂时不可用 - 读取会阻塞

2024-05-06

当我尝试使用“socket”库中的“read_nonblock”方法时,出现以下错误

IO::EAGAINWaitReadable: Resource temporarily unavailable - read would block

但是当我通过终端上的 IRB 尝试它时,它工作正常

我怎样才能让它读取缓冲区?


当我尝试使用“socket”库中的“read_nonblock”方法时,出现以下错误

当缓冲区中的数据未准备好时,这是预期的行为。自从出现异常之后,IO::EAGAINWaitReadable源自ruby版本2.1.0,在旧版本中你必须捕获IO::WaitReadable带有额外的端口选择和重试。因此,请按照以下建议进行操作红宝石文档 http://ruby-doc.org/core-2.3.0/IO.html#method-i-read_nonblock:

begin
   result = io.read_nonblock(maxlen)
rescue IO::WaitReadable
   IO.select([io])
   retry
end

对于较新版本的 os ruby​​ 你应该 trapIO::EAGAINWaitReadable也可以,但只是超时或无限重试阅读。我还没有在文档中找到该示例,但请记住它没有端口选择:

begin
   result = io.read_nonblock(maxlen)
rescue IO::EAGAINWaitReadable
   retry
end

然而,我的一些调查表明,最好在IO::EAGAINWaitReadable,这样你就可以得到:

begin
   result = io.read_nonblock(maxlen)
rescue IO::WaitReadable, IO::EAGAINWaitReadable
   IO.select([io])
   retry
end

要支持具有两个版本的异常的代码,只需声明以下定义IO::EAGAINWaitReadable in lib/核心下if条款:

if ! ::IO.const_defined?(:EAGAINWaitReadable)
   class ::IO::EAGAINWaitReadable; end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IO::EAGAINWaitReadable:资源暂时不可用 - 读取会阻塞 的相关文章

  • rspec 测试 has_many :through 和 after_save

    我有一个 我认为 相对简单的has many through与连接表的关系 class User lt ActiveRecord Base has many user following thing relationships has ma
  • 使 case/switch 返回值的快捷方式

    我很确定我看到有人做了像下面的代码这样的快捷技术 这不起作用 return case guess when guess gt answer then high when guess lt answer then low else corre
  • 在 Ruby 控制台应用程序中获取键盘事件(无需按“Enter”输入)的最佳方法是什么?

    我在互联网上寻找这个答案已经有一段时间了 发现其他人也在问同样的事情 即使在这里也是如此 因此 这篇文章将介绍我的案例以及对我找到的 解决方案 的回应 我对 Ruby 很陌生 但出于学习目的 我决定创建一个 gem here https g
  • 在 Ruby 中转义字符串

    我想在某些 Ruby 中插入以下内容作为变量的值 lt gt 用双引号将其引起来是行不通的 那么是否有一个很好的 escape until the end 之类的东西可用 不要使用多种方法 保持简单 转义 反斜杠和双引号 irb main
  • mail_form gem 与 sidekiq 工作者

    怎么做邮件表格gem 与 sidekiq 工作人员一起工作吗 https github com plataformatec mail form https github com plataformatec mail form 我可能做错了什
  • ruby on Rails“usr/bin/env:‘ruby2.3’:没有这样的文件或目录”

    我打字时遇到问题bundle exec rake db migrate在终端上 然后我收到了类似 usr bin env ruby2 3 No such file or directory 的结果 我遇到了同样的问题 但是运行时 rails
  • Rails I18n 翻译范围

    编写完全翻译的应用程序可能会变得乏味 有没有办法为当前上下文设置默认翻译范围 示例 我正在部分内容中写入 deadlines html erb in the 显示 html erb我的行动ProjectsController 现在 因为我想
  • Rails current_path 助手?

    我正在开发具有以下路由条件的 Rails 3 2 应用程序 scope locale locale de en do resources categories only index show get newest index as newe
  • 在 Ruby 中将多个代码块作为参数传递

    我有一个需要代码块的方法 def opportunity opportunities 1 if yield performances 1 end end 我这样称呼它 opportunity some array empty 但是我如何传递
  • 帮助重构这个讨厌的 Ruby if/else 语句

    所以我有这个大而多毛的 if else 语句 我将跟踪号码传递给它 然后它确定它是什么类型的跟踪号码 我怎样才能简化这件事 具体来说就是想减少代码行数 if num length lt 8 tracking service false el
  • 帮助程序中的 Rails Form 块 - 如何包含“防止伪造”

    我正在尝试为我的液体主题语言构建一个表单块 我的方法基于这个答案 https stackoverflow com questions 15189669 can the liquid ruby template engine deal wit
  • 检查数组元素的大小是否相同

    有没有最好 最有效的方法来检查数组元素的大小是否相同 1 2 3 4 5 gt false 1 2 3 4 5 6 gt true 我有什么 def element of same size arr arr map size uniq si
  • Ember:error.messages 在保存时不显示服务器错误

    当尝试创建新记录时 errors messages不渲染为文档中描述 http emberjs com api data classes DS Errors html 也就是说 控制台确实呈现了错误Error The backend rej
  • 设计涟漪

    我正在尝试使用以 riak 作为数据库的设备创建身份验证 我找到了同样的 ORM 策略https github com frank06 devise ripple https github com frank06 devise ripple
  • 将表列添加到 Group by 子句 - Ruby on Rails - Postgresql

    我正在尝试使用 Heroku 显然 Postgresql 对于聚合函数来说比 SQL 严格得多 当我推送到 Heroku 时 我收到一条错误消息 内容如下 关于另一个问题 https stackoverflow com questions
  • 使用 ruby​​ Net::SSH 通过 sudo 读取远程文件

    我必须读取我有权 sudo 读取的远程文件的内容 猫 少或尾巴 我将在 Ruby 中执行此操作 因此我认为应该使用 Net SSH 来执行此操作 该文件是一个日志文件 因此可能会很大 这是我现在正在尝试的代码 require rubygem
  • 随机化数组元素

    我有一个数组 number 1 2 3 4 5 6 7 8 9 现在 我想随机化数组内容 例如 5 3 2 6 7 1 8 请指导我如何继续 Use the shuffle方法 irb main 001 0 gt 1 2 3 4 5 shu
  • 有没有办法编写一个匹配除文件夹中的文件之外的所有文件的全局模式?

    我需要编写一个文件 glob 它将匹配除特定文件夹中包含的文件之外的所有文件 例如 除了高级文件夹中包含的文件之外的所有文件 foo 我已经到达以下区域 foo 然而 这个 glob 似乎与 Ruby 中的任何文件都不匹配File fnma
  • Ruby 中 SecureRandom.urlsafe_base64(8) 的碰撞概率?

    我在用SecureRandom urlsafe base64 8 为了在我的系统中创建 URL 安全的唯一 ID 我想知道如何计算碰撞概率 我将大约 10 000 个这些 id 插入到一个数组中 我想避免检查其中一个键是否已经在数组中 但我
  • Rails 5.2 Active Storage 添加自定义属性

    我有一个带有附件的模型 class Project lt ApplicationRecord has many attached images end 当我附加并保存图像时 我还想保存一个附加的自定义属性 display order 整数

随机推荐