BackgroundJobs прекращает работу после завершения - PullRequest
0 голосов
/ 06 января 2011

Я использовал Delayed_job в прошлом.У меня есть старый проект, который выполняется на сервере, где я не могу обновить Ruby 1.8.6 до 1.8.7, и поэтому не могу использовать отложенное задание, поэтому я пытаюсь использовать BackgroundJobs http://codeforpeople.rubyforge.org/svn/bj/trunk/README

У меня это работает, так что моя работа работает, но что-то не так.Например, если я запускаю задание следующим образом:

jobs = Bj.submit "echo hi", :is_restartable => false, :limit => 1, :forever => false

Затем я вижу задание в таблице bj_job и вижу, что оно завершено вместе с 'hi' в stdout.Я также вижу только одну работу в таблице, и она не перезапускает ее.

По какой-то причине, если я делаю это:

jobs = Bj.submit "./script/runner ./jobs/calculate_mean_values.rb #{self.id}", :is_restartable => false, :limit => 1, :forever => false

Работа все еще завершается, как и ожидалось,тем не менее, он продолжает вставлять новые строки в таблицу bj_job, и метод будет запускаться снова и снова, пока я не остановлю свой сервер dev.Это то, как это должно работать?

Я использую Ruby 1.8.6 и Rails 2.1.2, и у меня нет возможности обновления.Я использую плагин Bj.

Поскольку мне просто нужно запустить процесс один раз после сохранения модели, у меня все работает, используя скрипт / runner, например, так:

system " RAILS_ENV=#{RAILS_ENV}   ruby  #{RAILS_ROOT}/script/runner   'CompositeGrid.calculate_values(#{self.id})'  & "

Но хотелось бы знать, что я делаю что-то не так с Background Jobs,

1 Ответ

1 голос
/ 08 января 2011

ОК, это была глупая ошибка пользователя.Как оказалось, мне перезвонили, чтобы перезапустить процесс и создать бесконечный цикл.После исправления обратного звонка он работает точно так, как ожидалось.

...