我使用Python來訪問REST API,有時需要很長時間才能運行(超過5分鐘)。我使用pyelasticsearch發出請求,並嘗試設置超時時間爲10分鐘是這樣的:從python發出HTTP請求,並等待很長時間回覆
es = ElasticSearch(config["es_server_url"], timeout=600)
results = es.send_request("POST",
[config["es_index"], "_search_with_clusters" ],
cluster_query)
但5分鐘(不是10)requests.exceptions.ConnectionError (Caused by <class 'socket.error'>: [Errno 104] Connection reset by peer)
它超時後我嘗試設置插座超時以及直接使用請求:
socket.setdefaulttimeout(600)
try:
r = requests.post(url, data=post, timeout=600)
except:
print "timed out"
並且每次約5分鐘後超時。
如何讓我的腳本等待更長時間直到請求返回?
這個錯誤意味着服務器關閉了你的套接字,所以你在你的末尾指定一個更長的超時時間不會有幫助。 (這也可能意味着您真正與之通話的企業網絡代理服務器超時,或者中間的一些路由器已決定切斷您的電話,但是您的代碼無法超時)。服務器代碼或其他人的? – abarnert
是的,它是我的服務器。謝謝你的提示。我試着將請求直接發送到實際的服務器名稱:端口,並在8.5分鐘後成功。 BigIP在5分鐘後關閉連接。 – kielni