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 - <STDOUT>
答案 0 :(得分:11)
代码中的#6行是
logger.warn "perform is invoked."
此代码需要打开 STDOUT 流,您的错误名称为 Errno :: EIO 。
在Linux中,EIO意味着尝试读取/写入当前不可用的流。这可能是由于物理错误或孤立进程(其父级已经死亡)尝试从父进程获取stdio,或者当流被关闭时发生的。
答案 1 :(得分:3)
工作人员仍然可以在后台运行但不再能够访问STDOUT。
即。那些工人仍在继续处理工作,但在印刷方面,他们抱怨EIO。
(在我的情况下,它是由于杀死了tmux服务器而没有杀死工人造成的。请ps -ef | grep resque
然后他们在那里。)
解决方案:
杀死那些工人并开始新工作。
e.g。 pkill resque-1.25.2
(或者无论工人姓名如何)
答案 2 :(得分:-1)
对我来说,重新启动redis解决了它: service redis restart