Sha256: bf47d62127d2c28e823137c51deaf2bdd511f560b016c9d430166a5e9689c4b5
Contents?: true
Size: 1.87 KB
Versions: 9
Compression:
Stored size: 1.87 KB
Contents
require 'drb' require 'skynet/skynet_guid_generator' require 'skynet/skynet_logger' require 'skynet/skynet_config' require 'timeout' Skynet::CONFIG[:SKYNET_PATH] ||= File.expand_path(File.dirname(__FILE__) +"/..") require 'skynet/skynet_debugger' require 'skynet/skynet_message' require 'skynet/message_queue_adapters/message_queue_adapter' require 'skynet/message_queue_adapters/tuple_space' require "skynet/skynet_message_queue" require 'skynet/skynet_partitioners' require 'skynet/skynet_job' require 'skynet/skynet_worker' require 'skynet/skynet_task' require 'skynet/skynet_manager' require 'skynet/skynet_tuplespace_server' require 'skynet/skynet_ruby_extensions' require 'skynet/mapreduce_test' require 'skynet/skynet_launcher' require 'skynet/skynet_console' require 'skynet/mapreduce_helper' begin require 'fastthread' rescue LoadError # puts 'fastthread not installed, using thread instead' require 'thread' end class << Skynet # kinda like system() but gives me back a pid def fork_and_exec(command) sleep 0.01 # remove contention on manager drb object log = Skynet::Logger.get debug "executing /bin/sh -c \"#{command}\"" pid = safefork do close_files exec("/bin/sh -c \"#{command}\"") exit end Process.detach(pid) pid end def safefork (&block) @fork_tries ||= 0 fork(&block) rescue Errno::EWOULDBLOCK raise if @fork_tries >= 20 @fork_tries += 1 sleep 5 retry end # close open file descriptors starting with STDERR+1 def close_files(from=3, to=50) close_console (from .. to).each do |fd| IO.for_fd(fd).close rescue nil end end def close_console STDIN.reopen "/dev/null" STDOUT.reopen "/dev/null", "a" STDERR.reopen STDOUT end def process_alive?(worker_pid) Process.kill(0,worker_pid) return true rescue Errno::ESRCH => e return false end end
Version data entries
9 entries across 9 versions & 1 rubygems