gpt4 book ai didi

python - 从 python 发出 HTTP 请求并等待很长时间才能响应

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:09:54 25 4
gpt4 key购买 nike

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

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分钟后超时。

如何让我的脚本等待更长时间直到请求返回?

最佳答案

错误“Connection reset by peer”,又名 ECONNRESET,表示服务器(或您与服务器之间的某些路由器或代理)强行关闭了连接。

因此,在您这一端指定更长的超时不会产生任何影响。您需要弄清楚是谁在关闭连接并将其配置为等待更长时间。

合理的地方是服务器应用程序本身,无论驱动该应用程序的服务器程序是什么(例如,如果您将 Apache 与 mod_wsgi 一起使用,Apache),负载平衡路由器或前端服务器或反向代理在前面该服务器,或客户端前面的 Web 代理。

一旦你弄清楚问题出在哪里,如果它是你自己无法修复的东西,你可以通过从服务器到客户端的滴流来修复它——让它发送一些无用但无害的东西(一个 HTTP 100,一个额外的标题,一些您的客户知道如何跳过的正文,无论如何)每 120 秒。这可能有效也可能无效,具体取决于挂起的组件。

关于python - 从 python 发出 HTTP 请求并等待很长时间才能响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19598922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com