私はHerokuでresqueを使用しています。これは時々SIGTERMでジョブを中断します。複雑なジョブでresque-statusを指定してSIGTERMを処理する方法
は、これまでのところ、私はシンプルでこれを扱ってきました:
def process(options)
do_the_job
rescue Resque::TermException
self.defer options
end
私たちは仕事を追跡できるように、我々はresqueステータスを使い始めましたが、明らかに上記の方法は、ジョブとしてなることを破ります実際にそれが別の仕事に延期されたときに完了したことを示します。
現在の考えでは、resqueで現在のジョブを延期する代わりに、SIGTERMによって失敗したジョブを再キューする別のジョブが必要です。
def process(options)
do_part1 unless options['part1_finished']
options['part1_finished']
do_part2
rescue Resque::TermException
self.defer options
end
は単にdo_part1が繰り返されます際にこれらのジョブが例外を引き起こす救出し、単に再試行を取り除く:
トリックは、いくつかのジョブがより複雑であることに入っています。