2017-06-08 7 views
1

Ich führe einen Job aus, der Daten an eine Rest-API sendet.Ruby on Rails, verzögerter Job: run_at Variable

Nach dem Abschluss all dieser Anfragen brauche ich eine 10-minütige Verzögerung, dann wird eine Methode aufgerufen, die auf diese gesendeten Anfragen verarbeitet wird.

def self.batch_task(batch_params) 
    # a very long code 
    Batch.delay.check_requests 
end 

Meine zweite Methode ist check_requests

def self.check_requests 
    puts 'hello darkness' 
end 

def check_requests 
    self.check_requests 
end 

am Ende, ich rufe handle_asynchronously

handle_asynchronously :batch_task 
handle_asynchronously :check_requests, :run_at => Proc.new { 10.minutes.from_now } 

Batch_task läuft richtig von check_reqeusts gefolgt, aber ich bin nicht die 10 bekommen -minute Verzögerung vor der Funktion check_requests. Mein Rake Job funktioniert gut. Ich sehe auch die hello_darkness-Ausgabe in der Konsole von Rake-Jobs.

+0

versuchen Sie eine Verzögerung innerhalb verzögerten Verfahren zu schaffen? Was ist, wenn Sie 'Batch.delay.check_requests' direkt ausführen?' –

+0

das ist was ich will, zuerst wird der verzögerte Job beendet, dann wird die check_request mit 10 Minuten Verzögerung aufgerufen. – ashusvirus

+0

ok, aber produziert es eine Verzögerung von 10 Minuten, wenn Sie es außerhalb verzögerter Job-Methode ausführen? –

Antwort

0

Versuchen Sie, die delay wie in der unten stehenden batch_task Methode

def self.batch_task(batch_params) 
    # a very long code 
    Batch.delay(run_at: 10.minutes.from_now).check_requests 
end 

handle_asynchronously :batch_task 
handle_asynchronously :check_requests