【问题标题】:Errno::EIO: Input/output error - <STDOUT>Errno::EIO: 输入/输出错误 - <STDOUT>
【发布时间】:2017-01-06 06:18:22
【问题描述】:
class FaxFetchWorker
  include Sidekiq::Worker
  sidekiq_options :retry => false

  def perform(job_id=0)
    logger.warn "perform is invoked."

    FaxSource.all.each do |source|
      ...
    end
  end
end

第 6 行出现错误 Errno::EIO: Input/output error - &lt;STDOUT&gt;

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 sidekiq


    【解决方案1】:

    代码中的#6 行是这样的

        logger.warn "perform is invoked."
    

    此代码需要打开 STDOUT 流并且您的错误名称是 Errno::EIO

    在 linux EIO 中,意味着尝试读取/写入当前不可用的流。这可能是由于物理错误或孤立进程(其父进程已死亡)尝试从父进程获取 stdio 或当流关闭时发生的。

    【讨论】:

      【解决方案2】:

      工作人员可能仍在后台运行,但不再有权访问 STDOUT。

      即这些工人仍在继续处理工作,但在打印方面,他们抱怨 EIO。

      (在我的情况下,这是由于杀死 tmux 服务器而不杀死工作人员造成的。执行ps -ef | grep resque 就可以了。)

      解决方案:

      杀死那些工人并开始新的工人。

      例如pkill resque-1.25.2(或任何工人的名字)

      【讨论】:

        【解决方案3】:

        对我来说重启 redis 解决了它:service redis restart

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-15
          • 2019-09-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-13
          • 1970-01-01
          相关资源
          最近更新 更多