Ruby popen3在Sidekiq worker中没有按预期工作

时间:2014-03-04 21:15:12

标签: ruby-on-rails ruby multithreading sidekiq

我想了解有关传递给我的Popen包装器方法的wait_thread的更多信息

def my_popen(cmd, ignore_err = true)
  Open3.popen3(cmd, {}) do |stdin, stdout, stderr, wait_thr|
    cmd_status = wait_thr.value
    cmd_output << stdout.read
    cmd_output << stderr.read unless ignore_err
  end
  return cmd_output, cmd_status
end

它适用于短时间运行的进程,但它在Sidekiq工作程序中使用,可能需要大约一个小时。然而,当我计时时,无论工人真正需要多长时间,每次只需要大约30秒。为了计时,我只是在worker的开头向数据库添加一个时间戳条目,然后在最后更新它以保证线程的安全性,这样我就可以在UI中看到它。

这个等待线程是否与大约30秒后超时有关?

0 个答案:

没有答案