我正在使用Guzzle 6开发一个Laravel应用程序.很多功能都依赖于API,我为其创建了一个包装器.
我的包装器是一个类,它在__construct()
中创建Guzzle客户机,并具有各种公共函数,这些函数返回Guzzle请求的响应.
The API I'm using has a limit of 40 requests every 10 seconds. I am caching things, so it would be very rare to hit this limit, but I'd like to know that my application wouldn't just die if it did!
Some notes about my app:
- 只有在过go 6小时内未进行相同的调用时,才会进行API调用.如果有,则永远不会进行呼叫,并直接从我的redis缓存提供响应.
- 在大多数情况下,API调用是通过用户操作进行的.应用程序本身永远不会接近这些极限.
- 在大多数情况下,我已经拥有向用户显示请求页面所需的数据.可以在后台进行API调用,查看是否需要更新任何内容,但如果我已经拥有数据,并且API请求失败,这不会使页面变得无用.
- The app is live, https://likethis.tv if you'd like to look. I'm using TMDb API.
So, my question is, how should I make sure I do not hit this limit? A few ideas of mine are the following:
- 使用Laravel排队系统将大量的请求放入一个队列中,并且仅当我们仍有请求时才处理它们.如果没有,等待10秒的冷却时间结束...
- Use a
HandlerStack
for Guzzle directly. Not sure if this is possible, but I've used theHandlerStack
for caching responses before.
我尽量不引起过于固执己见的react ,但我相信可能有比上述更好和/或更简单的方法,或者如果它们是好主意,任何指针或建议都会很好.
Thanks in advance.