首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在php代码库中停止请求带有504超时响应的外部API

如何在php代码库中停止请求带有504超时响应的外部API
EN

Stack Overflow用户
提问于 2020-10-04 21:27:14
回答 1查看 200关注 0票数 1

我正在使用curl在我的PHP应用程序中请求一个免费的外部第三方API。当一次有太多请求时,它会关闭并显示504网关超时。是否有任何选项,当请求在超过5秒内没有响应时,它将停止等待API响应,并转到下一条语句?

据我所知,在应用程序中添加外部API时,会变成一个依赖项。需要你的关注和指导。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-10-05 07:42:28

发生的情况是,当无法处理每分钟一定数量的请求时,第三方web服务器通过返回504错误来触发“自我防御”。为了避免这种情况,您需要在达到限制之前或出现错误之后,通过限制请求的数量来遵守他们的服务质量(QoS)。您可以通过以下方式完成此操作:

  1. 通过a)查看他们的文档或询问,b)检查API的结果你可以立即做多少请求或通过c)实验和测量,来确定第三方站点每分钟可以处理多少请求。
  2. 使用某种类型的队列,该API的所有请求都将添加到队列中,并使用一个代码在队列中有消息时处理消息,然后调用API,然后从队列中删除或移动到failed_queue。对于队列,您可以使用外部库或创建一个简单的表来将消息保存为记录。可以在corn作业上执行代码检查和队列处理。
  3. 计算到目前为止您发送了多少请求,以及自上次请求发送以来的最后一次发送。如果请求数小于限制-1,请检查。如果少于1分钟,则执行应用程序接口请求,如果接收到的请求多于或504,则等待1分钟,例如‘sleep(60)’,然后再次发送请求。

最好在它发生之前避免504,因为API网站可能会在更长的时间内返回它,而不是阻止它所需的时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64195192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档