Laravel - 从路由调用工匠队列命令 - 邮递员超时

Posted

技术标签:

【中文标题】Laravel - 从路由调用工匠队列命令 - 邮递员超时【英文标题】:Laravel - Call artisan queue command from routes - postman timeout 【发布时间】:2021-11-28 09:02:22 【问题描述】:

在我的终端中运行php artisan queue:work --queue=high,default 效果很好。但是要通过 url 运行它,我在 routes\web.php 中给出了以下代码,并使用 url http://127.0.0.1:9000/command/queue/work 在本地服务器中访问,然后得到邮递员错误 maximum execution time of 60 seconds exceeded。如何解决这个问题?

Route::prefix('command')->group (function () 
  Route::get('/queue/work', function ()
   Artisan::call('queue:work --queue=high,default');
  );
);

但是,Artisan::call('queue:restart'); - 这个可行。

【问题讨论】:

【参考方案1】:

这是对队列的巨大误解。运行队列有两个主要原因。

您可以异步执行代码,并且不依赖 HTTP 请求,例如。用户无需等待。 您的工作量很大,单个进程无法扩展,您需要更多功能。

如果您必须通过 Web 服务器执行作业,您不会从队列中获得任何东西,而应该只将代码放在控制器中。

因此,如果您需要队列,则需要设置 supervisor 才能使其正常工作。否则就没有意义了。

【讨论】:

以上是关于Laravel - 从路由调用工匠队列命令 - 邮递员超时的主要内容,如果未能解决你的问题,请参考以下文章

Laravel/Lumen - 如何从网站触发工作流程?

如何编写工匠命令以在 Laravel 中搜索特定路线名称

如何从 Laravel Artisan 触发单元测试

无法从工匠命令 Laravel/Lumen 进行 Crypt::decrypt

Laravel 工匠命令配置

Laravel 工匠路由列表中的 HTTPException