gpt4 book ai didi

python - 在 python 2.7 中重用 httplib.HTTPConnection

转载 作者:行者123 更新时间:2023-11-28 16:46:01 25 4
gpt4 key购买 nike

最近继承了一个python项目,现在正在维护中。部分代码从网站发出几十万个请求,并将结果保存到数据库中。该代码为到达请求重用相同的 httplib.HTTPConnection 对象,然后循环访问

conn.request("GET",someString,'',headers)

response = conn.getresponse()

部分。几天前,在我的日志中,我看到其中一个请求引发了异常:

[Errno 104] Connection reset by peer  

紧随其后的是所有其他 conn.request() 失败。我的第一个想法是为每个请求建立一个新的连接,但这样做对性能的影响是深远而可怕的。所以我的问题是,我该如何解决这个问题,特别是因为我不是 100% 确定我什至可以真正测试它。

如果我在异常后调用 conn.connect(),它会正确地重新连接吗?

我正在寻找有关如何修复它以及可能如何测试它的建议。

感谢您的宝贵时间。

最佳答案

我认为您首先需要确定要处理的故障模式。例如,连接是否由于服务器上的临时资源问题而重置,快速周转连接将解决它?或者,服务器是否已关闭或重新启动,您应该中止您的进程?

假设第一种情况,我认为您的思路是正确的。尝试这样的事情(注意,这不是工作代码 - 它只是逻辑的一个例子):

while True:
try:
conn.request("GET",someString,'',headers)
response = conn.getresponse()
except httplib.HTTPException, e:
conn.connect()
continue
break

您可能应该为此添加一些逻辑,以在重复连接尝试之间暂停并在一定次数的尝试后放弃(这基本上是上面的第二种情况)。

为了对此进行测试,请尝试使用 tcpkill 来重置 TCP 连接:

http://www.gnutoolbox.com/tcpkill-command/

关于python - 在 python 2.7 中重用 httplib.HTTPConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13652875/

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