Hello, I had multiple worker classes, each set to load once. Some were adding periodic executions, some had scheduled work. I''ve discovered that this means there will be a worker process for each class. In an effort to get down to just one worker process (memory consumption was unaffordable), I have moved ALL work methods into one class. None of the methods assign any instance variables. Three of them are run periodically, three of them are scheduled. def create(args = nil) add_periodic_timer(1.minute) { deliver_reminders } add_periodic_timer(2.minutes) { process_emails } add_periodic_timer(3.minutes) { deliver_invitations } backgroundrb.yml :schedules: :single_worker: :deliver_hub_member_joins: :trigger_args: ''59 59 23 * * * *'' :deliver_expiration_reminders: :trigger_args: ''59 59 23 * * * *'' :deliver_trial_ending_reminders: :trigger_args: ''59 59 23 * * * *'' Is there anything I should be aware of with this kind of configuration? Anything that I should expect to fail? On another note, I have the schedules as "59 59 23 * * * *" because last weekend backgroundrb began to run "0 0 0 * * * *" as ''every second'' instead of as ''midnight''. I looked at the tests for the cron scheduler code, and there isn''t one for "0 0 0 * * * *"; also, most of the other cron tests failed too. Worked great for months, then we went from -5GMT to -4GMT. Coincidence? Thanks for a great tool! adam
On Tue, Mar 17, 2009 at 2:14 AM, Adam Williams <adam at thewilliams.ws> wrote:> Hello, > > I had multiple worker classes, each set to load once. Some were adding > periodic executions, some had scheduled work. I''ve discovered that this > means there will be a worker process for each class. In an effort to get > down to just one worker process (memory consumption was unaffordable), I > have moved ALL work methods into one class. None of the methods assign any > instance variables. Three of them are run periodically, three of them are > scheduled. > > ?def create(args = nil) > ? ?add_periodic_timer(1.minute) ?{ deliver_reminders } > ? ?add_periodic_timer(2.minutes) { process_emails } > ? ?add_periodic_timer(3.minutes) { deliver_invitations } > > ?backgroundrb.yml > ? ?:schedules: > ? ? ?:single_worker: > ? ? ? ?:deliver_hub_member_joins: > ? ? ? ? ?:trigger_args: ''59 59 23 * * * *'' > ? ? ? ?:deliver_expiration_reminders: > ? ? ? ? ?:trigger_args: ''59 59 23 * * * *'' > ? ? ? ?:deliver_trial_ending_reminders: > ? ? ? ? ?:trigger_args: ''59 59 23 * * * *'' > > Is there anything I should be aware of with this kind of configuration? > Anything that I should expect to fail? >Since you are scheduling all your tasks within same worker, its possible that some scheduled job that takes more time may not let other scheduled jobs to run immediately. If this happens, your jobs will run delayed accordingly. Hence its advisable to tune time window between various scheduled jobs.> On another note, I have the schedules as "59 59 23 * * * *" because last > weekend backgroundrb began to run "0 0 0 * * * *" as ''every second'' instead > of as ''midnight''. I looked at the tests for the cron scheduler code, and > there isn''t one for "0 0 0 * * * *"; also, most of the other cron tests > failed too. Worked great for months, then we went from -5GMT to -4GMT. > Coincidence? > > Thanks for a great tool! > > ?adam > _______________________________________________ > Backgroundrb-devel mailing list > Backgroundrb-devel at rubyforge.org > 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
On Tue, Mar 17, 2009 at 2:14 AM, Adam Williams <adam at thewilliams.ws> wrote:> Hello, > > I had multiple worker classes, each set to load once. Some were adding > periodic executions, some had scheduled work. I''ve discovered that this > means there will be a worker process for each class. In an effort to get > down to just one worker process (memory consumption was unaffordable), I > have moved ALL work methods into one class. None of the methods assign any > instance variables. Three of them are run periodically, three of them are > scheduled. > > ?def create(args = nil) > ? ?add_periodic_timer(1.minute) ?{ deliver_reminders } > ? ?add_periodic_timer(2.minutes) { process_emails } > ? ?add_periodic_timer(3.minutes) { deliver_invitations } > > ?backgroundrb.yml > ? ?:schedules: > ? ? ?:single_worker: > ? ? ? ?:deliver_hub_member_joins: > ? ? ? ? ?:trigger_args: ''59 59 23 * * * *'' > ? ? ? ?:deliver_expiration_reminders: > ? ? ? ? ?:trigger_args: ''59 59 23 * * * *'' > ? ? ? ?:deliver_trial_ending_reminders: > ? ? ? ? ?:trigger_args: ''59 59 23 * * * *'' > > Is there anything I should be aware of with this kind of configuration? > Anything that I should expect to fail? > > On another note, I have the schedules as "59 59 23 * * * *" because last > weekend backgroundrb began to run "0 0 0 * * * *" as ''every second'' instead > of as ''midnight''. I looked at the tests for the cron scheduler code, and > there isn''t one for "0 0 0 * * * *"; also, most of the other cron tests > failed too. Worked great for months, then we went from -5GMT to -4GMT. > Coincidence? >You might be hitting on a bug. It would be really helpful if you can minimize a testcase and attach here.