我有一个Laravel Job正在派遣。作业将获取一些记录以进行处理,然后对每个记录调用一个API。 API偶尔可能会引发错误,例如HTTP500等。此库(鹅)使用Guzzle。
我想捕获错误,标记记录以供稍后重试,然后继续循环中的其余记录。
我的代码如下,但是当发生错误时,foreach循环会停止并且作业不会继续。
我的猜测是Laravel中的Job Handler引发了致命错误,并且该作业被更高级别地暂停。
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;
}
我如何告诉工作继续?这里只会发生一小部分错误,我已经编写了“重试”的逻辑,所以我很高兴没有完全停止工作。
答案 0 :(得分:0)
}
太多,而且位置错误
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();
}
//} removed
catch (\Goose\Exception $e) {
//Set a flag to come back later
//Try continue with next record
continue;
}
}
return;
}