如何将 Laravel 队列工作限制为一个执行结束出口?

Posted

技术标签:

【中文标题】如何将 Laravel 队列工作限制为一个执行结束出口?【英文标题】:How to limit Laravel queue work to one execution end exit? 【发布时间】:2018-02-12 21:37:43 【问题描述】:

出于测试目的,我将作业排在队列中。 我在另一边打开了我执行的命令行:

php 工匠队列:工作

上面的命令一直在终端上监听和运行,直到我手动杀死它。

因为我正在单独测试队列中的作业。让命令执行一个或多个条目并退出而不是作为守护进程执行并不得不以某种方式杀死它会非常好......

还要考虑到,在不重新启动守护进程命令的情况下,无法编辑代码并让当前执行 queue:work 获取更新。

【问题讨论】:

【参考方案1】:

您正在寻找php artisan queue:work --once,其中--once 将处理队列中的下一个可用作业,然后退出。如果没有可用的作业,它将休眠(默认为 3 秒)然后退出。

还有 php artisan queue:listen 循环执行上述命令,这意味着它会在没有人工干预的情况下检测您的代码更改。

【讨论】:

【参考方案2】:

据我所知,目前还没有这样的命令。您可以尝试使用sync队列驱动进行测试。

【讨论】:

是的。正如@sisve 回答的那样。【参考方案3】:

使用

php artisan queue:work --tries=3

尝试执行 3 次

【讨论】:

这与我的问题无关。这与同一队列消息的尝试次数无关。

以上是关于如何将 Laravel 队列工作限制为一个执行结束出口?的主要内容,如果未能解决你的问题,请参考以下文章

laravel 队列 - 同步驱动程序如何工作?它是在单独的进程/线程还是主执行线程中执行?

我将如何在后台运行 Laravel 5.2 的队列监听器?

Laravel 4.2 AWS SQS 队列设置使用 EB 工作环境

Laravel 队列和 Azure WebJob

对于 YARN 中的单个队列,如何将 state=RUNNING 中的 spark 应用程序数量限制为 1?

是否存在ManagedExecutorService队列限制?