我正在使用请求模块来查询一个相对较大的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 响应之前等待响应的时间?我还能做些什么来尝试提高更复杂查询的可靠性?
您可以添加 ,timeout= 其中秒是浮点数。 (请参阅 pydoc requests.request 获取可直接提供给 pydoc.get(( 的可用选项。 在快速情况下,API 服务器端也可能有限制,您可能需要将查询分解为一口大小的块。
如果您阅读请求的文档,您将看到 requests.get 默认情况下不会超时。
此外,504 是由网关服务器产生的错误。
所以,实际发生的事情是,你的PostGREST服务器在与postgres服务器的通信中超时。
您无法通过更改 request.get 调用来阻止此操作,您必须重新配置一个或两个服务器。
(换句话说,这不是python或请求问题(