class XapianDb::BeanstalkWorker
Public Instance Methods
process_requests()
click to toggle source
# File lib/generators/templates/beanstalk_worker 16 def process_requests 17 18 Rails.logger.info "XapianDb beanstalk worker: initializing..." 19 Rails.logger.flush 20 21 begin 22 url = XapianDb::Config.beanstalk_daemon_url 23 beanstalk = Beanstalk::Pool.new([url]) 24 worker = XapianDb::IndexWriters::BeanstalkWorker.new 25 Rails.logger.info "XapianDb beanstalk worker: ready" 26 Rails.logger.flush 27 rescue Exception => ex 28 Rails.logger.error "cannot connect to beanstalk daemon: (#{ex}), terminating" 29 Rails.logger.flush 30 return 31 end 32 33 loop do 34 job = beanstalk.reserve 35 begin 36 params = JSON.parse(job.body).symbolize_keys! 37 Rails.logger.info "XapianDb beanstalk worker: executing task #{params}" 38 Rails.logger.flush 39 task = params.delete :task 40 worker.send task, params 41 Rails.logger.info "XapianDb beanstalk worker: done" 42 Rails.logger.flush 43 rescue Exception => ex 44 Rails.logger.error "XapianDb beanstalk worker: could not process #{job.body} (#{ex})" 45 Rails.logger.flush 46 end 47 job.delete 48 end 49 end