If my memory you mean - result cache, you should definitely use memcache in production. But i think you are using rather old version of the plugin and hence that option may not be available.
On Wed, Jan 21, 2009 at 3:03 AM, Diogo Silva <[email protected]> wrote: > Hi, > > Thanks for support and sorry for annoyance. I'll try the solution tomorrow > morning and let you know if worked. > > Another question. I'm having also problems related to failure in allocating > memory with backgroundrb. Which is the best solution while configurating > backgroudrb.yml? > > Best Regards, > Diogo Silva > > 2009/1/20 hemant <[email protected]> >> >> You can handle the exception. Http exception would be either timeout >> or generic Exception class and hence wrap your external service >> invocation code in: >> >> begin >> # do some work >> rescue Timeout::Error >> # timeout error >> rescue >> # something else >> end >> >> It should do the trick. >> >> >> >> On Wed, Jan 21, 2009 at 2:16 AM, Diogo Silva <[email protected]> wrote: >> > Hi, >> > Don't know if it's the right address but I'm seeking help with my >> > workers. >> > >> > I have two problems related to workers and backgroundrb: >> > >> > 1) I have a worker that uses soap/wsdlDriver and it's set to autoload >> > and >> > starts called by controller. This only makes a simple SOAP >> > communication. It >> > works most of the times. But sometimes worker dies and the reason is >> > related >> > with some timeout related with httpclient gem. When it dies it's a pain >> > to >> > make it work again. >> > Down it's the code of my controller: >> > >> > def index >> > prepare_job >> > @id = "prepare" >> > render 'admin/importar/worker' >> > end >> > >> > def import >> > execute_job >> > @id = "execute" >> > render 'admin/importar/worker' >> > end >> > >> > def prepare_job >> > start_worker("PREPARE_IMPORT") >> > end >> > >> > def execute_job >> > start_worker("EXECUTE_IMPORT") >> > end >> > >> > def start_worker(action) >> > worker = MiddleMan.ask_status(:worker => :iif_worker) >> > >> > if worker != nil && worker[:progress] < 4 >> > flash[:notice] = "Já existe um processo de importação a >> > decorrer!" >> > else >> > MiddleMan.ask_work(:worker => :iif_worker, :worker_method => >> > :do_work, >> > :data => action) >> > session[:job_key] = :import >> > end >> > end >> > >> > def get_progress >> > if request.xhr? >> > worker = MiddleMan.ask_status(:worker => :iif_worker) >> > return if worker == nil >> > >> > progress_percent = worker[:progress] >> > render :update do |page| >> > page.call('progressPercent', 'progressbar', progress_percent) >> > if progress_percent >= 100 >> > @info = worker[:info] >> > @total = worker[:total] >> > if params[:id] == "prepare" >> > page.replace_html 'import_content', :partial => >> > 'admin/importar/todo' >> > elsif params[:id] == "execute" >> > flash[:notice] = "#...@total} marcas importas com sucesso!" >> > page.replace_html 'import_content', :partial => >> > 'admin/importar/done' >> > end >> > end >> > end >> > else >> > redirect_to :action => 'index' >> > end >> > end >> > >> > And below some code of worker: >> > >> > require 'rexml/document' >> > require 'soap/wsdlDriver' >> > require 'xsd/mapping' >> > >> > class IifWorker < BackgrounDRb::MetaWorker >> > set_worker_name :iif_worker >> > #set_no_auto_load(true) >> > #attr_reader :progress, :info, :total >> > >> > #def create(args = nil) >> > # register_status('Dass') >> > # Thread.abort_on_exception = true >> > #end >> > >> > def do_work(action) >> > @progress = 0 >> > update_status >> > if action == "PREPARE_IMPORT" >> > prepare_import >> > elsif action == "EXECUTE_IMPORT" >> > execute_import >> > end >> > @progress = 100 >> > update_status >> > end >> > >> > def prepare_import >> > stuff, chave = auth_and_query >> > results = stuff.goldMineData.record >> > >> > @total = results.size >> > @progress = 15 >> > @increment = ("%4.2f" % ((100.0 - @progress) / results.size)).to_f >> > @info = findRecordsToUpdate(results) >> > >> > update_status >> > >> > @soap.reset_stream >> > end >> > >> > def execute_import >> > stuff, chave = auth_and_query >> > results = stuff.goldMineData.record >> > >> > @total = results.size >> > @progress = 15 >> > @increment = ("%4.2f" % ((100.0 - @progress) / results.size)).to_f >> > @info = updateRecords(stuff.goldMineData.record) >> > #[email protected](:Key=>chave) >> > >> > update_status >> > >> > @soap.reset_stream >> > end >> > >> > def auth_and_query >> > factory = >> > >> > SOAP::WSDLDriverFactory.new("http://infofranchisingwsp.ife.pt:8081/infofranchisingUpdateService.asmx?WSDL") >> > @soap = factory.create_rpc_driver >> > soapResponse = @soap.GetToken(nil) >> > token = soapResponse.getTokenResult >> > >> > chave = authenticate(token) >> > @progress = 5 >> > update_status >> > soapResponseXML = @soap.GetXML(:Key=>chave) >> > @progress = 10 >> > update_status >> > >> > return soapResponseXML.getXMLResult, chave >> > end >> > >> > def update_status >> > register_status({:progress => @progress, :info => @info, :total => >> > @total}) >> > end >> > >> > def increment_progress >> > @progress += @increment >> > @progress = ("%3.2f" % @progress).to_f >> > @progress = 100 if @progress > 100 >> > end >> > >> > def findRecordsToUpdate(results) >> > (...) >> > >> > Can you help me solve this problem? >> > >> > Thanks in advance, >> > Diogo Silva >> > >> > _______________________________________________ >> > Backgroundrb-devel mailing list >> > [email protected] >> > http://rubyforge.org/mailman/listinfo/backgroundrb-devel >> > >> >> >> >> -- >> Let them talk of their oriental summer climes of everlasting >> conservatories; give me the privilege of making my own summer with my >> own coals. >> >> http://gnufied.org > > -- Let them talk of their oriental summer climes of everlasting conservatories; give me the privilege of making my own summer with my own coals. http://gnufied.org _______________________________________________ Backgroundrb-devel mailing list [email protected] http://rubyforge.org/mailman/listinfo/backgroundrb-devel
