Ruby on rails 错误号::EIO:输入/输出错误-<;标准件>;
获取错误Ruby on rails 错误号::EIO:输入/输出错误-<;标准件>;,ruby-on-rails,ruby-on-rails-3,sidekiq,Ruby On Rails,Ruby On Rails 3,Sidekiq,获取错误Errno::EIO:Input/output Error-在代码的第6行 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 e
Errno::EIO:Input/output Error-
在代码的第6行
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
此代码需要打开STDOUT流,错误名称为Errno::EIO
在linux EIO中,表示有人试图读取/写入当前不可用的流。这可能是由于物理错误,或者当孤立进程(其父进程已死亡)试图从父进程获取stdio时,或者当流关闭时发生的。辅助进程可能仍在后台运行,但不再具有对STDOUT的访问权限 也就是说,这些工人仍在处理工作,但在印刷方面,他们抱怨EIO (在我的例子中,这是由于在不杀死工人的情况下杀死了tmux服务器造成的。执行
ps-ef | grep resque
,他们就在那里。)
解决方案:
杀死那些工人,开始新的工作
e、 g.
pkill resque-1.25.2
(或工人的名字)我重启redis解决了这个问题:服务redis重启
logger.warn "perform is invoked."