[Backgroundrb-devel] background worker just stops running after some time

dtown dtown22 at gmail.com
Thu May 31 19:45:26 EDT 2007


Hi,

I am fairly new to ruby/rails, but I thought I did a fair job of setting up
my background worker, but after some time, maybe 4-5 hours of running, it
just stops running, without any messages. Here is the yml file:

backgroundrb.yml
---
:port: 2000
:rails_env: production
:host: localhost


here is my schedules file:
alerts_task:
    :class: :alerts_worker
    :job_key: :alerts_key
    :worker_method: :do_work
    :trigger_args:
      :start: <%= Time.now + 5.seconds %>
      :repeat_interval: <%=  1.hour %>


and i start it by doing: />script/backgroundrb start

everytime the worker is called, I print an Iteration Time to the logger.
While checking on the worker, I noticed that it hadn't run in several hours
(i.e. the Iteration printout was several hours old). I looked at the
background_server.log, and everything looked fine, here is the last few
entries:

20070531-12:47:44 (678) Schedule triggered: #<struct #<Class:0x834cc74>
job=#<Proc:0x0847d238@/usr/local/www/mysite/vendor/plugins/backgroundrb/server/lib/backgroundrb/middleman.rb:336>,
trigger=#<BackgrounDRb::Trigger:0x8d669f8 @start_time=Thu May 31 10:47:44
-0700 2007, @repeat_interval=3600, @end_time=nil>, earliest=Thu May 31
12:47:44 -0700 2007, last=Thu May 31 12:47:44 -0700 2007>
20070531-13:47:44 (678) Schedule triggered: #<struct #<Class:0x834cc74>
job=#<Proc:0x0847d238@/usr/local/www/mysite/vendor/plugins/backgroundrb/server/lib/backgroundrb/middleman.rb:336>,
trigger=#<BackgrounDRb::Trigger:0x8d669f8 @start_time=Thu May 31 10:47:44
-0700 2007, @repeat_interval=3600, @end_time=nil>, earliest=Thu May 31
13:47:44 -0700 2007, last=Thu May 31 13:47:44 -0700 2007>
20070531-14:47:48 (678) Schedule triggered: #<struct #<Class:0x834cc74>
job=#<Proc:0x0847d238@/usr/local/www/mysite/vendor/plugins/backgroundrb/server/lib/backgroundrb/middleman.rb:336>,
trigger=#<BackgrounDRb::Trigger:0x8d669f8 @start_time=Thu May 31 10:47:44
-0700 2007, @repeat_interval=3600, @end_time=nil>, earliest=Thu May 31
14:47:44 -0700 2007, last=Thu May 31 14:47:44 -0700 2007>

and no error messages.

So I checked to see if the processes are still running, and I have:
$ps aux | grep ruby
mongrel   639  0.5  3.2 36000 32176  ??  S    10:47AM
2:28.13/usr/local/bin/ruby /usr/local/bin/mongrel_rai
mongrel   633  0.3  3.3 36820 32924  ??  S    10:47AM
2:41.17/usr/local/bin/ruby /usr/local/bin/mongrel_rai
mongrel   636  0.0  3.2 35888 32040  ??  S    10:47AM
2:33.56/usr/local/bin/ruby /usr/local/bin/mongrel_rai
root      678  0.0  0.2 39076  1816  ??  S    10:47AM   2:22.97 ruby:
backgroundrb (ruby)
root      679  0.0  0.0 20824     0  ??  IW   -         0:00.00 ruby:
backgroundrb_logger (ruby)
root      681  0.0  0.0 20824     0  ??  IW   -         0:00.00 ruby:
backgroundrb_results (ruby)
root      688  0.0  0.0 67288     0  ??  IW   -         0:00.00 ruby:
alerts_worker_alerts_key (ruby)
root     2266  0.0  0.0   348   224  p0  R+    4:42PM   0:00.00 grep ruby

I have thought of having a sleep call inside my do_work, but I dont like
that...i want to keep my design as simple as possible.

Does anyone have any ideas?

thanks!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/backgroundrb-devel/attachments/20070531/378d6c75/attachment.html 


More information about the Backgroundrb-devel mailing list