首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从python发出HTTP请求,等待响应很长时间

从python发出HTTP请求,等待响应很长时间
EN

Stack Overflow用户
提问于 2013-10-25 20:30:16
回答 1查看 3K关注 0票数 1

我使用Python来访问REST,有时运行时间很长(超过5分钟)。我正在使用pyelasticsearch来发出请求,并尝试将超时设置为10分钟,如下所示:

代码语言:javascript
复制
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分钟)后就会超时

我尝试设置套接字超时并直接使用请求,如下所示:

代码语言:javascript
复制
socket.setdefaulttimeout(600)
try:
    r = requests.post(url, data=post, timeout=600)
except:
    print "timed out"

每次大约5分钟后就会超时。

如何使脚本在请求返回之前等待更长时间?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-25 21:56:29

错误的“由对等者重置连接”(也称为ECONNRESET )意味着服务器--或您和服务器之间的某个路由器或代理--强行关闭连接。

因此,在您的终端指定一个更长的超时不会有任何不同。您需要知道是谁关闭了连接,并将其配置为等待更长时间。

可以查看服务器应用程序本身,无论服务器程序驱动该应用程序(例如,如果您使用Apache与mod_wsgi,Apache)、负载平衡路由器或前端服务器或在该服务器前面的反向代理,或者在客户端前面使用web代理。

一旦你找出问题所在,如果它是你自己无法修复的东西,你也许可以通过从服务器到客户端的涓涓细流来修复它--让它每120秒发送一些无用但无害的东西( HTTP 100、额外的头、一些你的客户知道如何跳过的正文文本)。这可能起作用,也可能不起作用,这取决于正在挂起的组件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19598922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档