2017-01-02 18 views

答えて

0

あなたはタイムアウトの例外を発生する場合は、Rubyのタイムアウトを使用することができます。ここにはdocがあり、それを使用する方法についてはarticleです。

あなたのコードは次のようになります

require 'timeout' 
Listing.transaction do 
    begin 
    Timeout::timeout(1) do 
     Delayed::Job.enqueue(RecentListingsJob.new(user.id, @listing.id)) 
    end 
    rescue Timeout::Error 
    <whatever you want to happen> 
    end 
end 

私はタイムアウトを許可する取引上の具体的なものはないと思うが、あなたが遅延ジョブを使用している場合、あなたは上max_run_time設定に見ることができますワーカー。 max_run_timeを含むワーカー構成の例をthe docsから

# config/initializers/delayed_job_config.rb 
Delayed::Worker.destroy_failed_jobs = false 
Delayed::Worker.sleep_delay = 60 
Delayed::Worker.max_attempts = 3 
Delayed::Worker.max_run_time = 5.minutes 
Delayed::Worker.read_ahead = 10 
Delayed::Worker.default_queue_name = 'default' 
Delayed::Worker.delay_jobs = !Rails.env.test? 
Delayed::Worker.raise_signal_exceptions = :term 
Delayed::Worker.logger = Logger.new(File.join(Rails.root, 'log', 'delayed_job.log')) 
+0

私は質問を更新しました。私はルビーのタイムアウトメソッドを避けたいです。 –

+0

Delayed :: Job構成オプションを使用して、今回は2番目のオプションを追加するための私の答えを更新しました。 –

関連する問題