开发者

BackgroundJobs stopping job after completion

I've used Delayed_job in the past. I have an old project that runs on a server where I can't upgrade from Ruby 1.8.6 to 1.8.7, and therefore can't use Delayed Job, so I'm trying BackgroundJobs http://codeforpeople.rubyforge.org/svn/bj/trunk/README

I have it working so that my job runs, but something doesn't seem right. For example, if I run the job like this:

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

Then I see the job in the bj_job table and I see that it completed along with 'hi' in stdout. I also see only one job in the table and it开发者_JAVA技巧 doesn't keep re-running it.

For some reason if I do this:

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

The job still completes as expected, however, it keeps inserting new rows in the bj_job table, and the method gets run over and over until I stop my dev server. Is that how it is supposed to work?

I'm using Ruby 1.8.6 and Rails 2.1.2 and I don't have the option of upgrading. I'm using the plugin flavor of Bj.

Because I just need to run the process once after the model is saved, I have it working by using script/runner directly like this:

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

But would like to know if I'm doing something wrong with Background Jobs,


OK, this was stupid user error. As it turns out, I had a call back that was restarting the process and creating an endless loop. After fixing the call back it is working exactly as expected.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜