2

我正在寻找多个 3rd 方 API 来收集用户搜索查询的信息。我计划为每个我想要访问的 API 分拆一个线程,以最大限度地减少我的响应时间。由于内存/cpu 问题,我还想限制我的应用程序在任何时候可以运行的线程数量。

由于我使用 Laravel 作为我的框架,因此我试图使用 Laravel 队列来完成此任务,但似乎我可能无法从作业中获取响应数据。

  • laravel 队列是解决这个问题的正确方法吗?如果是这样,我如何监听作业的状态并在作业完成后检索数据?我看到了一些指向将关闭传递给工作的东西,但有些东西对我来说并不合适。
4

1 回答 1

3

这取决于。如果要进行大量 API 调用,尤其是在这些 API 调用可能非常缓慢的情况下,作业队列和工作池可能是合适的。但是,除非你真的确定你需要它,否则我会尽量避免所有这些架构。

首先,我会考虑对外部 API 执行异步请求,并尝试将整个事情保持在一个进程中。Guzzle HTTP 客户端库为执行这种异步请求提供了一个对程序员非常友好的 API。

如果外部请求真的很多或很慢,您可以考虑使用队列。但是在这种情况下,您正在考虑实现一堆逻辑来对所有作业进行排队,然后轮询直到它们完成(在此过程中向您的用户提供反馈),最后返回合并的结果。这最终可能是必要的,但我将从上面描述的更简单的实现开始。

于 2016-10-31T00:59:53.990 回答