【问题标题】:Laravel API: extremely long timeouts for external APILaravel API:外部 API 的超长超时
【发布时间】:2020-03-21 14:51:17
【问题描述】:

对于 Laravel api 中的端点,我正在调用一个非常慢的外部 api,并且可能需要 90 分钟才能响应,因为它需要运行一大堆进程。

在我的 laravel api 中,我正在向我的客户发送请求已启动的即时响应,并且在我收到来自 api 的响应后 90 分钟结束时,他们会收到一封电子邮件。

是否可以有 120 分钟或更长时间的超时来调用 REST API,并在这段时间内保持开放的连接?它会影响我的 API 的其他用户的性能吗?是否有任何 Laravel 参数需要更改(超时除外),以便一切顺利运行(例如,是否有最大数量的并发工作人员?)?

【问题讨论】:

  • 可能希望将此作为后台队列作业处理,而不是在 Web 请求中运行
  • 您是否已经设置了队列?
  • 和一个代码示例会很好:)
  • 把代码###放在这里。

标签: laravel rest api


【解决方案1】:

Laravel Queues

如果您还没有使用它们,那么是的,您需要调度一个作业,而不是仅仅执行您的代码。

第 1 步:创建作业

php artisan make:job ProcessRequest

第 2 步:为作业添加句柄逻辑

/**
 * Execute the job.
 *
 * @return void
 */
public function handle(AudioProcessor $processor)
{
    //Logic goes in here.
}

第 3 步:在需要的地方分派工作

 ProcessRequest::dispatch();

第 4 步:(可选)安装 Laravel Horizon 以监控作业 安装后别忘了启动它

php artisan horizon

也看看Delayed Dispatching Jobs 好东西是望远镜,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 2016-01-02
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    相关资源
    最近更新 更多