我想在 PHP (Guzzle) 中实现重试模式以确定在失败的情况下是否需要再次发送请求。如果需要,我是否应该在再次发送之前使用一些延迟。注意:这是内部服务通信,每个服务都在扩展组中并在负载均衡器后面,所以我们假设目标 URL 是现有 URL,但可能由于某种原因不可用,所有服务器也是 NGINX
是否有任何最佳实践是否执行重试以及是否延迟?
据我所知,状态503意味着服务器超载,所以在这种情况下,小延迟可能有助于等待新实例启动并帮助分配负载???
出现错误怎么办502/504,还要延迟重试???
遇到错误怎么办500??在我的理解500中,当服务器或一般逻辑出现问题并且我们不需要执行任何重试时应该抛出???
怎么样400,就像我们得到了一样的动作500??
怎么样404??可以有两种类型404,一种是端点确实不存在(我认为在内部服务之间进行通信的情况下这是不可能的),另一种是未找到请求的资源(例如,未通过凭据找到用户)。我认为如果404我们不需要执行重试
422我在某些域错误或验证错误的情况下使用,但也许服务器可以在其他情况下返回它?如果它只是由我触发的,我可以假设不需要重试。
其他状态代码呢,还有 NGINX 特定代码???
我知道我可能需要为每个 URI 案例制定特定的重试策略,但我相信有一些通用/可重用的规则。
一只名叫tom的猫