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