apps/worker/worker.rb in spiderfw-0.6.5 vs apps/worker/worker.rb in spiderfw-0.6.6

- old
+ new

@@ -31,19 +31,19 @@ return unless Spider.conf.get('worker.enable') self.start end def self.app_shutdown - return unless Spider.conf.get('worker.enable') + return unless @runner || Spider.conf.get('worker.enable') @mutex.try_lock || return Spider::Logger.info("Shutting down worker in #{Process.pid}") if @runner unless @runner == Thread.current @runner.stop @runner = nil end - elsif(File.exist?(@pid_file)) + elsif File.exist?(@pid_file) begin pid = IO.read(@pid_file).to_i unless pid == Process.pid Spider::Logger.info("Sending TERM signal to worker #{pid}") Process::kill 'TERM', pid @@ -97,17 +97,22 @@ end @mutex.unlock end end if (options[:fork]) - forked = Spider.fork do + Spider.logger.debug("Forking worker in #{Process.pid}") + @forked = Spider.fork do $0 = 'spider-worker' - trap('TERM') { app_shutdown } - trap('INT') { app_shutdown } + $SPIDER_NO_RESPAWN = true if $SPIDER_SPAWNED + Spider.main_process_startup + Spider.on_main_process_shutdown do + Worker.app_shutdown + end start.call + Spider.logger.debug("Forked worker started") @runner.join if @runner end - Process.detach(forked) if (options[:detach]) + Process.detach(@forked) if (options[:detach]) @runner = nil else start.call end return @runner