排队有限制的咕噜咕噜请求
我正在开发一个Laravel应用程序,使用Guzzle 6。许多功能依赖于API,我已经为API创建了一个包装器。
我的包装器是一个类,它在 中创建 Guzzle 客户端,并具有各种公共函数,这些函数返回来自 Guzzle 请求的响应。__construct()
我使用的 API 限制为每 10 秒 40 个请求。我正在缓存东西,所以达到这个限制是非常罕见的,但我想知道我的应用程序不会死掉, 如果它这样做!
关于我的应用的一些说明:
- 仅当过去 6 小时内未进行相同调用时,才会进行 API 调用。如果有,则永远不会进行调用,并且直接从我的 redis 缓存提供响应。
- 在大多数情况下,API 调用是通过用户操作进行的。应用程序本身永远不会接近达到这些限制。
- 在大多数情况下,我已经拥有向用户显示请求的页面所需的数据。可以在后台执行 API 调用,以查看是否有任何内容需要更新,但是如果我已经拥有数据,并且 API 请求失败,这不会使页面无用。
- 该应用程序是实时的,如果您想查看,https://likethis.tv。我正在使用 TMDb API。
所以,我的问题是,我应该如何确保我没有达到这个限制?我的一些想法如下:
- 使用 Laravel 队列系统将 Guzzle 请求放入队列中,并且仅在我们仍有请求时处理它们。如果没有,请等到10秒冷却时间过去...
- 直接将 a 用于 Guzzle。不确定这是否可能,但我之前使用过 用于缓存响应。
HandlerStack
HandlerStack
我试图不引起过于固执己见的回应,但我相信可能有比上述更好和/或更简单的方法,或者如果它们是好主意,任何指针或建议都会很棒。
提前致谢。