2017-08-11 134 views
0

我正在使用請求模塊來查詢一個相對較大的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響應之前增加請求等待響應的時間量?我還有什麼可以嘗試提高更復雜查詢的可靠性?

回答

0

您可以添加,timeout = where秒是一個浮點數。 (請參閱pydoc requests.request,以獲取可直接提供給pydoc.get()的可用opts)。在API服務器端也可能存在限制,因爲在快速情況下您可能需要將查詢拆分爲一塊大小的塊。

0

如果您閱讀請求的文檔,您會看到requests.get默認不會超時。

另外,504是由網關服務器產生的錯誤。

因此,實際發生的情況是,您的PostGREST服務器在與您的postgres服務器通信時超時。

您無法通過更改request.get調用來停止此操作,而必須重新配置一臺或兩臺服務器。

(換句話說,這不是一個Python或請求問題)

+0

謝謝!我閱讀了請求文檔,但無法弄清楚它的含義 - 這很容易理解。 –