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 <[EMAIL PROTECTED]
> 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
[email protected]
http://rubyforge.org/mailman/listinfo/backgroundrb-devel
--
Brent Collier | 919.564.6915 | www.BrentCollier.com | www.acts-as-blogr.com
_______________________________________________
Backgroundrb-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/backgroundrb-devel