我应该使用 Laravel 队列来管理我的应用程序中的线程吗

Should I use Laravel Queues to manage threads across my application

我希望点击多个第 3 方 API 来收集用户搜索查询的信息。我计划为我想点击的每个 API 分拆一个线程,以最大限度地减少我这边的响应时间。出于 memory/cpu 的考虑,我还想限制我的应用程序在任何时候可以拥有的线程数量 运行。

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

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

首先,我会考虑对外部 API 执行异步请求,并尝试将整个过程保持在一个进程中。 Guzzle HTTP client library 为执行此类异步请求提供了对程序员非常友好的 API。

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