我使用Python来访问REST,有时运行时间很长(超过5分钟)。我正在使用pyelasticsearch来发出请求,并尝试将超时设置为10分钟,如下所示:
es = ElasticSearch(config["es_server_url"], timeout=600)
results = es.send_request("POST",
[config["es_index"], "_search_with_clusters" ],
cluster_query)但在使用requests.exceptions.ConnectionError (Caused by <class 'socket.error'>: [Errno 104] Connection reset by peer) 5分钟(而不是10分钟)后就会超时
我尝试设置套接字超时并直接使用请求,如下所示:
socket.setdefaulttimeout(600)
try:
r = requests.post(url, data=post, timeout=600)
except:
print "timed out"每次大约5分钟后就会超时。
如何使脚本在请求返回之前等待更长时间?
发布于 2013-10-25 21:56:29
错误的“由对等者重置连接”(也称为ECONNRESET )意味着服务器--或您和服务器之间的某个路由器或代理--强行关闭连接。
因此,在您的终端指定一个更长的超时不会有任何不同。您需要知道是谁关闭了连接,并将其配置为等待更长时间。
可以查看服务器应用程序本身,无论服务器程序驱动该应用程序(例如,如果您使用Apache与mod_wsgi,Apache)、负载平衡路由器或前端服务器或在该服务器前面的反向代理,或者在客户端前面使用web代理。
一旦你找出问题所在,如果它是你自己无法修复的东西,你也许可以通过从服务器到客户端的涓涓细流来修复它--让它每120秒发送一些无用但无害的东西( HTTP 100、额外的头、一些你的客户知道如何跳过的正文文本)。这可能起作用,也可能不起作用,这取决于正在挂起的组件。
https://stackoverflow.com/questions/19598922
复制相似问题