使用python请求在504超时之前增加时间

问题描述:

我正在使用请求模块来查询一个相对较大的PostgRES数据库(〜14 GB),可通过PostgREST API访问,该对象由对等设置的简单服务器托管。使用python请求在504超时之前增加时间

当我做简单的API调用,如

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

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

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

requests.get('https://api.nycdb.info/[email protected]@."MADISON"') 

我怀疑这是因为服务器没有响应速度不够快,由于其简单的处理能力和规模的数据库。但是,我期待社区在这里寻求帮助。

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

您可以添加,timeout = where秒是一个浮点数。 (请参阅pydoc requests.request,以获取可直接提供给pydoc.get()的可用opts)。在API服务器端也可能存在限制,因为在快速情况下您可能需要将查询拆分为一块大小的块。

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

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

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

您无法通过更改request.get调用来停止此操作,而必须重新配置一台或两台服务器。

(换句话说,这不是一个Python或请求问题)

+0

谢谢!我阅读了请求文档,但无法弄清楚它的含义 - 这很容易理解。 –