【问题标题】:Increasing time before 504 time-out using python requests使用python请求增加504超时之前的时间
【发布时间】:2018-01-20 10:32:05
【问题描述】:

我正在使用 requests 模块查询一个相对较大的 PostgRES 数据库(约 14 GB),该数据库可通过 PostgREST API 访问,托管在由对等方设置的简单服务器上。

当我进行简单的 API 调用时,例如

requests.get('https://api.nycdb.info/real_property_legals?bbl=eq.4043210050')

我收到 200 响应,一切正常。但是,当我进行更多计算密集型搜索(例如文本搜索)时,我在绝大多数时间都会收到 504 响应。

这是一个几乎总是返回 504 超时的 API 调用示例:

requests.get('https://api.nycdb.info/real_property_parties?address1=@@."MADISON"')

我怀疑这是因为服务器响应速度不够快,原因在于其简单的处理能力和数据库的大小。但是,我在这里向社区寻求帮助。

有没有办法增加请求在提供 504 响应之前等待响应的时间?我还能做些什么来尝试提高更复杂查询的可靠性?

【问题讨论】:

    标签: python postgresql timeout python-requests postgrest


    【解决方案1】:

    您可以添加 ,timeout= 其中 seconds 是一个浮点数。 (有关可以直接提供给 pydoc.get() 的可用选项,请参阅 pydoc requests.request。)在快速情况下,您可能需要将查询分解为一口大小的块,API 服务器端也可能存在限制。

    【讨论】:

      【解决方案2】:

      如果您阅读请求的文档,您会看到 requests.get 默认不会超时。

      此外,504 是网关服务器产生的错误。

      所以,实际发生的情况是,您的 PostGREST 服务器与您的 postgres 服务器的通信超时。

      您无法通过更改 request.get 调用来阻止这种情况,您必须重新配置您的一个或两个服务器。

      (换句话说,这不是 python 或请求问题)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-04
        • 2022-09-28
        • 2021-07-26
        • 1970-01-01
        • 2014-06-19
        • 2017-04-29
        • 1970-01-01
        相关资源
        最近更新 更多