【发布时间】:2016-11-05 02:50:21
【问题描述】:
如何检查作业是否未能完成?
我如何告诉作业在作业的句柄函数中重试?
或者如何强制将作业视为失败的作业?
【问题讨论】:
-
谢谢@龚。我已经看到了。它是由工匠在命令行中完成的,但我想在句柄函数中以编程方式完成。
如何检查作业是否未能完成?
我如何告诉作业在作业的句柄函数中重试?
或者如何强制将作业视为失败的作业?
【问题讨论】:
我发现代码需要运行失败(或抛出异常)才能被视为失败的作业。
我只是在需要的地方添加了throw new Exception()。
然后 laravel 将其视为失败的作业。
【讨论】:
你可以在你的 Job 中实现失败的函数。
<?php
namespace App\Jobs;
.......
public function failed(\Exception $exception)
{
\Log::info('job failed');
}
}
【讨论】:
我如何告诉作业在作业的句柄函数中重试?
不确定是否适用于其他连接类型,但如果您使用的是 Redis,则可以通过命令直接从 handle() 主体将作业释放回队列:
$this->release(10);
其中 10 是以秒为单位的延迟,之后它应该返回到队列中。
【讨论】: