如果某个网站依赖于上游数据库或其他抽象服务或商店 - 基本上是大多数已知的网站 - 那么当上游请求因超时而死亡时,我应该返回503还是504?
504感觉更多是为代理服务器,缓存或其他网络基础设施而设计的,但503也不对,因为服务很好,当前的请求恰好已经死亡,也许搜索可能已经广泛或类似。503服务不可用
服务器当前不可用(因为它过载或关闭 用于维护)。通常,这是一个临时状态。有时, 这在测试服务器上也可以是永久性的。
504网关超时
服务器充当网关或代理,但没有收到 来自上游服务器的及时响应。
根据HTTP,哪个是'正确'?
路
答案 0 :(得分:3)
503听起来合适,如果这是一个临时条件,只需等待即可解决。 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html声明:“这意味着这是一个临时条件,经过一段时间后会缓解。”
500听起来也合适。 RFC规定:“服务器遇到意外情况,导致服务器无法完成请求。”无响应的数据库是一种例外/意外情况。
IMO,它归结为:您提供的错误代码可以帮助呼叫者(即HTTP客户端)响应这种情况吗?在这种情况下,客户除了稍后再试一次之外什么都不能做。鉴于此,我会保持简单并返回500.我认为客户更可能关心网站是否可用并且不太可能关心具体原因。此外,更少的响应代码使客户端编码变得更容易。这只是我的意见。