我希望点击多个第三方API来收集用户搜索查询的信息。我打算为我想要命中的每个API分离一个线程,以最大限度地缩短我的响应时间。我还想限制我的应用程序在任何时候运行的线程数量,因为内存/ CPU问题。
由于我使用Laravel作为我的框架,我试图使用Laravel队列完成此任务,但似乎我可能无法从作业中获取响应数据。
答案 0 :(得分:1)
这取决于。如果要进行大量的API调用,则可能需要作业队列和工作池,尤其是在这些API调用非常慢的情况下。但是,除非你确定需要它,否则我会尽量避免所有这些架构。
首先,我会考虑对外部API执行异步请求,并尝试将整个过程保留在一个进程中。 Guzzle HTTP client library为执行此类异步请求提供了一个程序员友好的API。
如果外部请求真的很多或很慢,您可以考虑使用队列。但在这种情况下,您正在考虑实现一堆逻辑来排队所有作业,然后轮询直到它们完成(在整个过程中向您的用户提供反馈),最后返回合并的结果。这可能最终是必要的,但我从上面描述的更简单的实现开始。