我应该使用 Laravel 队列来管理我的应用程序中的线程吗
Should I use Laravel Queues to manage threads across my application
我希望点击多个第 3 方 API 来收集用户搜索查询的信息。我计划为我想点击的每个 API 分拆一个线程,以最大限度地减少我这边的响应时间。出于 memory/cpu 的考虑,我还想限制我的应用程序在任何时候可以拥有的线程数量 运行。
因为我使用 Laravel 作为我的框架,我试图使用 Laravel 队列来完成这个,但似乎我可能无法从作业中获取响应数据。
- laravel 排队是解决这个问题的正确方法吗?如果是这样我怎么办
监听作业的状态并在作业完成后检索数据?我看到一些事情指向结束工作,但有些事情对我来说并不合适。
视情况而定。如果确实有大量 API 调用要进行,尤其是如果那些 API 调用可能非常慢,则作业队列和工作池可能是合适的。但是,除非你真的确定你需要它,否则我会尽量避免所有这些架构。
首先,我会考虑对外部 API 执行异步请求,并尝试将整个过程保持在一个进程中。 Guzzle HTTP client library 为执行此类异步请求提供了对程序员非常友好的 API。
如果外部请求真的很多或者很慢,可以考虑使用队列。但在那种情况下,您正在考虑实现一堆逻辑来对所有作业进行排队,然后进行轮询直到它们完成(在此过程中向您的用户提供反馈),最后 return 合并结果。这可能最终是必要的,但我将从上面描述的更简单的实现开始。
我希望点击多个第 3 方 API 来收集用户搜索查询的信息。我计划为我想点击的每个 API 分拆一个线程,以最大限度地减少我这边的响应时间。出于 memory/cpu 的考虑,我还想限制我的应用程序在任何时候可以拥有的线程数量 运行。
因为我使用 Laravel 作为我的框架,我试图使用 Laravel 队列来完成这个,但似乎我可能无法从作业中获取响应数据。
- laravel 排队是解决这个问题的正确方法吗?如果是这样我怎么办 监听作业的状态并在作业完成后检索数据?我看到一些事情指向结束工作,但有些事情对我来说并不合适。
视情况而定。如果确实有大量 API 调用要进行,尤其是如果那些 API 调用可能非常慢,则作业队列和工作池可能是合适的。但是,除非你真的确定你需要它,否则我会尽量避免所有这些架构。
首先,我会考虑对外部 API 执行异步请求,并尝试将整个过程保持在一个进程中。 Guzzle HTTP client library 为执行此类异步请求提供了对程序员非常友好的 API。
如果外部请求真的很多或者很慢,可以考虑使用队列。但在那种情况下,您正在考虑实现一堆逻辑来对所有作业进行排队,然后进行轮询直到它们完成(在此过程中向您的用户提供反馈),最后 return 合并结果。这可能最终是必要的,但我将从上面描述的更简单的实现开始。