在 python 2.7 中重用 httplib.HTTPConnection

2023-12-20

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

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

response = conn.getresponse()

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

[Errno 104] Connection reset by peer  

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

如果我在异常后调用 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/ http://www.gnutoolbox.com/tcpkill-command/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 python 2.7 中重用 httplib.HTTPConnection 的相关文章

随机推荐

  • 如何在css中定义多个类的hover事件?

    在CSS中 如何定义多个类的悬停事件以使用相同的属性 这似乎不起作用 my div hover my td hover border 1px solid red Thanks 您应该用逗号分隔 如下所示 my div hover my td
  • 以编程方式更改 ActionBar 选项卡下划线颜色

    我已经创建了操作栏 ActionBar actionbar getActionBar 操作栏的背景更改为 actionbar setBackgroundDrawable actionBarBackgroundImage 现在我需要以编程方式
  • Python,日志记录:使用带有字典配置的自定义处理程序?

    这是关于 Python 3 2 GNU Linux x86 64 上的日志记录模块 是否可以使用字典配置设置自定义处理程序 这是我正在尝试的代码 import logging import logging config class Cust
  • Android:首选项屏幕从右到左

    这是PreferenceScreen的xml文件 PreferenceCategory 根据我的需要显示为 RTL 但其他组件显示为 LTR 如何让他们RTL 我必须遵循这个link http android developers blog
  • 从 pyodbc 调用过程时出错

    这是我的第一个问题 所以 如果重复或格式错误 我很抱歉 我搜索了其他问题 发现该错误很常见 但出现在多种情况下 我有一个非常简单的 python 代码 我想在 MSSQL 中从 pyodbc 执行一个过程 import pyodbc con
  • tkinter 显示当前标签,删除前一个[重复]

    这个问题在这里已经有答案了 我正在尝试一个程序 它将显示在输入框中输入的相应名称的标签 问题 它重叠并显示标签 而不是消失以前的条目标签 我的编码 import Tkinter as tki class App object def ini
  • Backbone.js Underscore.js 过滤集合与数组

    我基本上正在尝试解决这个问题 但是使用数组并使用相应数组的值返回所有对象 而不仅仅是值 按属性值过滤骨干集合 https stackoverflow com questions 11762105 filter backbone collec
  • 推荐的元元素?

    为我的网站项目建立一个 基本框架 我想知道哪些元元素是真正必要 推荐的 我特别想知道如何处理语言属性 在下面的例子中 我认为 不必要地重复
  • gradle 构建因未知主机异常而失败

    我刚刚安装了新版本的 Android Studio 并尝试使用内置模板创建一个项目 我的环境是 Windows 7 SP1 64 位 在安全域环境中 我是我的计算机上的域管理员 这是我所看到的 C Users stuz AndroidStu
  • 术语“更新数据库”不被识别为 cmdlet、函数、脚本文件或可操作程序的名称。检查[重复]

    这个问题在这里已经有答案了 我正在使用 VS 2015 Community Update 3 当我尝试使用命令重新创建 EF 驱动的数据库时update database在包管理器控制台中 显示错误 术语 更新数据库 不被识别为 cmdle
  • sequelize postgres 将 fn 'date' 与 jsonb 值结合起来

    我需要比较格式字符串MM DD YYYY与postgres中的另一个使用sequelize在jsonb列上 在常规专栏上我会做类似的事情 sequelize where sequelize fn date sequelize col cre
  • 将元组列表作为参数传递给 scala 中的 Spark udf

    我正在尝试将元组列表传递给 scala 中的 udf 我不确定如何为此准确定义数据类型 我试图将其作为整行传递 但它无法真正解决它 我需要根据元组的第一个元素对列表进行排序 然后发回 n 个元素 我已经尝试过以下 udf 定义 def ud
  • Parse.com 推送通知未在 Android 后台显示

    我将 Parse com 与 Ionic 应用程序和 PushPlugin 结合使用 并尝试使用自定义发件人 ID 通过 GCM 实现 Parse 的推送通知 当我向所有设备发送消息或使用带有 cURL 的 REST API 时 当应用程序
  • 如何改变这种设计以避免沮丧?

    假设我有一个全部继承自基类的对象集合 就像是 abstract public class Animal public class Dog Animal class Monkey Animal 现在 我们需要喂养这些动物 但不让它们知道如何喂
  • 十进制转 JSON [重复]

    这个问题在这里已经有答案了 我正在从数据库中提取一个十进制值的总和 我正在尝试在 JSON 结果中使用该值 json dumps sum amount where amount is my Decimal Django 无法序列化Decim
  • Boost.Python python链接错误

    我正在运行带有最新 Boost 发行版 1 55 0 的 Mac OS X 10 8 4 Darwin 12 4 0 我正在按照说明进行操作here http www boost org doc libs 1 55 0 libs pytho
  • Office 加载项开发 - 格式错误的 GET URL (_host_Info=...)

    我目前正在使用 Microsoft 提供的 JavaScript 界面开发 MS Word Office Addin 我使用 Django 后端进行了测试实现 一切正常 然而 对于最终产品 我必须将功能与在多种配置中运行的现有 Java 后
  • chunk_split() 破坏多字节字符

    当我使用chunk split 函数 它破坏了我的重音字符和特殊字符 我该如何纠正这个问题 这是我的 PHP 代码 if count text gt 0 text implode text echo chunk split text 8 b
  • 在 C# 中使用 linq 或 lambda 表达式返回一个集合加上一个值

    我想返回一个集合加上一个值 目前 我正在使用一个字段创建一个新列表 向列表中添加一个值 然后返回结果 有没有办法用 linq 或 lambda 表达式来做到这一点 private List
  • 在 python 2.7 中重用 httplib.HTTPConnection

    我最近继承了一个python项目 现在正在维护它 部分代码从网站发出数十万个请求 并将结果保存到数据库中 该代码重用相同的 httplib HTTPConnection 对象来发送请求 然后循环 conn request GET someS