重试模式,如何确定PHP中的失败类型

问题描述 投票:0回答:1

我想在PHP中实现重试模式(Guzzle),以确定是否需要在失败的情况下再次发送请求。并且,如果需要,是否应该在重新发送之前使用一些延迟。注意:这是内部服务的通信,每个服务都在扩展组中,并且在负载均衡器之后,因此我们假定目标URL是现有URL,但由于某些原因可能不可用,而且所有服务器都是NGINX

是否有最佳实践,是否进行重试以及是否延迟?

据我所知,状态503表示服务器过载,因此在这种情况下,较小的延迟可能有助于等待新实例启动并帮助分配负载???

如果发生502/504错误,该怎么办,也要重试一段时间?

500错误时该怎么办?根据我的理解,一般情况下,如果服务器或逻辑有问题,并且不需要执行任何重试,就应该抛出500

400怎么样,就像得到500一样的动作?

404呢?可以有两种类型的404,一种是如果端点确实不存在(我认为内部服务之间无法通信),另一种是找不到请求的资源(例如,未通过凭据找到用户) )。我认为在404的情况下,我们无需执行重试

422在某些域错误或验证错误的情况下使用,但是在其他情况下服务器可以返回它吗?如果仅由我触发,则可以认为无需重试。

其他状态代码呢,还有NGINX特定代码???

我知道可能需要针对每个URI情况制定特定的重试策略,但是我相信有一些通用/可重复使用的规则。

我想在PHP中实现重试模式(Guzzle),以确定是否需要在失败的情况下再次发送请求。并且如果需要,在再次发送之前是否应该使用一些延迟,或者...

php http nginx microservices http-status-codes
1个回答
0
投票

我最终得到这样的列表:

© www.soinside.com 2019 - 2024. All rights reserved.