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

Mitchell Curtis Hatter curtis.hatter at insightbb.com
Sat Sep 20 00:11:25 EDT 2008


Thanks, yeah I specifically moved my development off my laptop to the  
CentOS system because I saw a thread that said it was only a problem  
on OS X. This is unfortunate, as when it does work it's great. I'll  
try the sleep call and see what starts to happen.

Thanks again,
Curtis

On Sep 19, 2008, at 11:58 PM, Brent Collier wrote:

> Yeah, you pretty much have to throw a sleep call in between creating  
> the worker and actually asking it to do work.  It only takes a  
> fraction of a second.  I was told this was only a problem on OS X,  
> but I've also witnessed it on Gentoo.  I see this question on the  
> mailing list enough that I think it might as well be included in the  
> docs somewhere.
>
> -Brent
>
>
> On Fri, Sep 19, 2008 at 11:14 PM, Mitchell Curtis Hatter <curtis.hatter at insightbb.com 
> > wrote:
> 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
> _______________________________________________
> Backgroundrb-devel mailing list
> Backgroundrb-devel at rubyforge.org
> http://rubyforge.org/mailman/listinfo/backgroundrb-devel
>
>
>
> -- 
> Brent Collier | 919.564.6915 | www.BrentCollier.com | www.acts-as-blogr.com



More information about the Backgroundrb-devel mailing list