【问题标题】:Is it appropriate to return HTTP 504 Gateway Timeout as a response if a database server times out?如果数据库服务器超时,是否适合返回 HTTP 504 Gateway Timeout 作为响应?
【发布时间】:2014-02-08 23:41:11
【问题描述】:

在 REST 服务中,当应用程序等待数据库查询超时并且无法完成客户端的请求时,返回 504 状态代码是否合适?

504 网关超时

服务器充当网关或代理,没有收到来自上游服务器的及时响应。


目前我们只是显示一个通用的 500 错误,它在 UI 中显示为一个通用的服务器错误。有一些实用程序可以向用户显示这是一个数据库超时错误(也许还有减少他们所要求的范围的建议),因为如果他们联系任何人,至少他们会获得更多有用的信息负责他们的服务器。


任何其他 REST 服务如何处理数据库超时的指针?

【问题讨论】:

    标签: rest timeout http-status-code-504


    【解决方案1】:

    我也会返回 500,有效载荷中的详细信息表明出了什么问题。这是RFC 2616对504的描述:

    服务器在充当网关或代理时,没有收到 来自 URI 指定的上游服务器的及时响应(例如 HTTP、FTP、LDAP)或其他需要的辅助服务器(例如 DNS) 访问以尝试完成请求。

    504 的错误描述表明服务器正在充当网关或代理,而您的服务肯定没有这样做。

    【讨论】:

    • 从技术上讲,他的服务不会充当数据库服务器的代理吗?我可以看到 504 或 503。
    • 如果他的应用程序是数据库的 API 包装器,提供创建表和插入元素等 API 操作,我认为它只是一个代理。如果它使用数据库作为 API 功能的一部分,但不是真正的“数据库 API”,那么数据库就是资源,而 API 不是代理。
    猜你喜欢
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    相关资源
    最近更新 更多