gpt4 book ai didi

laravel - 如何处理失败的工作 Laravel

转载 作者:行者123 更新时间:2023-12-03 22:06:17 24 4
gpt4 key购买 nike

我在我的 cron 工作中多次调用不同的 api,例如:

foreach ($transactions as $transaction) {
$job = (new SendApplicationToBank($transaction));
$this->dispatch($job);
}

一笔交易有许多银行,所以我向所有相关银行发送一笔交易:

工作:
public function handle(){
try {
$result = app($bankClass)::sendLoanApplication($this->transaction);
} catch (Exception $e) {
//Silent fail
}
}

问题是它在第一家银行上失败了,只是不断重试。

应该如何去配置,以便如果一项作业失败,只需释放回队列并继续下一项?

结果:

php artisan queue:listen

最佳答案

你不应该 catch Exception让工作正常失败。现在你捕获了它,什么都不做(//Silent fail)

您应该在数据库中创建一个表以自动捕获失败的作业:

php artisan queue:failed-table

在运行队列的脚本中,您应该添加失败前的尝试次数:
php artisan queue:listen --tries=3

添加某种超时也很聪明:
php artisan queue:listen --tries=3 --timeout=60

您还可以通过向作业添加失败的方法来调用失败时的 webhook:
public function failed()
{
// Called when the job is failing...
}

关于laravel - 如何处理失败的工作 Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49174469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com