2015-05-01 15 views
7

ben bu ben yeniden denemek değil istiyorum, başarısız durumda uyumsuzGecikmeli 1 denemeden sonra gecikmeli olarak çağırabilir miyim?

User.delay(queue: 'users').grab_third_party_info(user.id) 

çalıştırmak bir yöntem var. Varsayılan yeniden denemelerim 3, değiştiremediğim. Sadece bunu bir kez denemek istiyorum. Aşağıdaki gibi görünmüyor:

User.delay(queue: 'users', attempts: 3).grab_third_party_info(user.id) 

Herhangi bir fikir? https://github.com/collectiveidea/delayed_job#custom-jobs

itibaren

+1

Yanıtı Aldınız mı? – pramod

cevap

1

geçersiz kılan bir başına iş maks girişimlerini ayarlamak için Gecikmeli :: bu iş

NewsletterJob = Struct.new(:text, :emails) do 
    def perform 
    emails.each { |e| NewsletterMailer.deliver_text_to_email(text, e) } 
    end 

    def max_attempts 
    3 
    end 
end 

üzerinde max_attempts yöntemi tanımlayabilirsiniz Worker.max_attempts bu yardımı ediyor mu?

+2

Hayır, çünkü bunu sizin oluşturduğunuz bir işte yapmanız gerekir. Ben sadece gecikme yöntemi .... – Jeff

2

Bu benim en sevdiğim çözüm değil, ancak girişimleri ayarlayabileceğiniz gecikme yöntemini kullanmanız gerekiyorsa: en az bir kez denemenize. Yani sizin durumda şu Gecikmeli :: Worker.max_attempts

User.delay(queue: 'users', attempts: Delayed::Worker.max_attempts-1).grab_third_party_info(user.id) 

zaten ran sanki Bu delayed_jobs tabloya girersiniz kullanarak bunu daha güvenli yapabilir

User.delay(queue: 'users', attempts: 2).grab_third_party_info(user.id) 

iyisi çalışması gerekir iki kez, tekrar çalıştığında maksimum denemelerde olacak.

+0

hackish ile çağırmaktan bahsediyorum, ama, çalışır ... –

İlgili konular