2011-01-06 16 views
0

私は過去に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テーブルの仕事を見て、私はそれが標準出力に「こんにちは」と一緒に完了していることがわかります。私はまた、テーブル内に1つの仕事だけを見て、それを再実行しないでください。何らかの理由で

私はこれを行う場合:

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のプラグインフレーバーを使用しています。私はちょうどモデルが保存された後に一度のプロセスを実行する必要があるので、私はそれがこのように直接スクリプト/ランナーを使用して作業してい

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

しかし、私は何かをやっているかどうかを知りたいですバックグラウンドジョブで間違っていた

答えて

1

これは愚かなユーザーエラーでした。結局のところ、私はプロセスを再開し、無限ループを作り出すコールバックを持っていました。コールバックを修正した後は、期待どおりに動作しています。

+1

今後も同様の問題を抱えている他の人に恩恵を受けるように、自分のソリューションを投稿する時間をとってくれてありがとう! – vonconrad

関連する問題