[Backgroundrb-devel] MY worker won't stop working

Chris H chris at etechdata.com.au
Tue Jul 25 02:25:00 EDT 2006


Hi Ezra,

love backgroundrb! Awesome plugin!

I have a worker that processes some data files and loads this data in mysql.
It runs fine and processes all the files. 

However if I try to call delete_worker from my controller while it is 
processing ,
it says it has stopped the worker but I can still see the process
in top and also see the rows still going into mysql.


My do_work looks like this:

  def do_work(args)
    # This method is called in it's own new thread when you
    # call new worker. args is set to :args
    if args
      @process_cdr = ProcessCdr.new(args)
    else
      @process_cdr = ProcessCdr.new
    end
    @process_cdr.process

  end

I have start and stop actions in my controller:

 def start
     
    if @params[:cdr_file].to_s.length > 0
   
      MiddleMan[:process_watcher] ||MiddleMan.new_worker(:class => 
:watch_cdr_process_worker, :args => @params[:cdr_file].to_s, :job_key => 
       :process_watcher)
       
    else
   
      MiddleMan[:process_watcher] || MiddleMan.new_worker(:class => 
:watch_cdr_process_worker, :job_key => :process_watcher)
         
    end
   
    redirect_to :action => 'status'
   
  end
 
  def stop
 
    MiddleMan.delete_worker(:process_watcher) if MiddleMan[:process_watcher]
    redirect_to :action => 'status'
   
  end

I have some ajax code monitoring the status of my worker and when I 
choose stop it responds that my worker has indeed stopped.

I also tried adding a method stop_work to my worker which called 
self.terminate but this didn't seem to work either.

I'm confused as to what I should be doing to get my worker to stop.

Thanks in advance,
Chris.




More information about the Backgroundrb-devel mailing list