我使用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