[Backgroundrb-devel] Worker's not created quick enough?

Mitchell Curtis Hatter curtis.hatter at insightbb.com
Fri Sep 19 23:14:57 EDT 2008


Just starting out with BackgroundDRb and have some troubles with  
calling a worker's async process right after I try to create it.

Here's my code:

In my book model I have the following:

# Starts a new BackgroundDRb worker for searching
def start_search(worker_key, job_key, search_params)
   MiddleMan.new_worker(:worker => :texis_worker, :worker_key =>  
worker_key.to_s)
   MiddleMan.worker(:texis_worker, worker_key.to_s).async_search(:arg  
=> {:book => self, :search_params => search_params}, :job_key =>  
job_key)
end

# Get Status of Worker
def self.search_status(worker_key, job_key)
   status = MiddleMan.worker(:texis_worker,  
worker_key.to_s).ask_result("#{worker_key.to_s}_#{job_key.to_s}")
end

My controller's search method has this line:

@book.start_search(session[:user], @book.id, search_params)

Here's my worker:

class TexisWorker < BackgrounDRb::MetaWorker
   set_worker_name :texis_worker
   set_no_auto_load true

   def create(args = nil)
     logger.info "Creating #{worker_key}"
   end

  def search(arg)
     logger.info "Testing #{worker_key} -- #{job_key} --  
#{arg[:book].name}"
     cache["#{worker_key.to_s}_#{job_key.to_s}"] = arg[:book].name
   end
end


When a user runs a search in my books controller I call start_search  
passing in a user id as the worker_key, book_id as job_key and a hash  
of search parameters.

I tail the log and then browse to the controller. In my log I will get:
   Creating 293460168

But nothing else.

Eventually, say 30 seconds to a minute and switching between different  
books I finally start to get something like:
   Testing 293460168 -- 3806 -- Workers Compensation

If I do this from script/console everything works fine.

I'm running mongrel in development mode, using packet 0.1.13,  
backgroundrb 1.0.4, cent os 5

It seems initially creating the worker is not done for a while? and so  
the calls to async are failing; once the worker has been intialized  
everything is fine?

Any help would be appreciated.

Thanks,
Curtis


More information about the Backgroundrb-devel mailing list