Setzen Sie einen Laravel-Job ausnahmsweise fort

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Setzen Sie einen Laravel-Job ausnahmsweise fort

by Anonymous » 22 Dec 2024, 07:06

Ich habe einen Laravel-Job, der versandt wird. Der Job erhält einige Datensätze zur Verarbeitung und ruft dann für jeden eine API auf. Die API könnte gelegentlich einen Fehler auslösen, z. HTTP500 usw. Diese Bibliothek (Goose) verwendet Guzzle.

Ich möchte den Fehler abfangen, den Datensatz markieren, um es später erneut zu versuchen, und mit den restlichen Datensätzen in fortfahren Schleife.

Mein Code lautet wie folgt aber wenn ein Fehler auftritt, wird die foreach-Schleife beendet und der Job wird nicht fortgesetzt.

Ich vermute, dass der Job-Handler in Laravel gibt einen schwerwiegenden Fehler aus und der Job wird auf einer höheren Ebene angehalten.

public function extractArticles() {

$articles = $this->fetchArticlesToExtract();

$goose = new GooseClient();

foreach($articles as $article) {

try {

//Get the Article Data - Errors can happen here

$articleData = $goose->extractContent($article->source_url);

//Do Some Processing

$article->save();

}

catch (\Goose\Exception $e) {

//Set a flag to come back later

//Try continue with next record
continue;
}

}
return;
}


Wie kann ich den Job anweisen, fortzufahren? Hier kann nur eine kleine Anzahl von Fehlern auftreten, und ich habe die Logik geschrieben, es erneut zu versuchen, daher bin ich froh, den Job nicht vollständig abzubrechen.

Top