当连接中断时,读取 urllib2 生成的流永远不会恢复

2024-01-13

在尝试使我的一个 Python 应用程序在连接中断时更加健壮时,我发现调用 urllib2 生成的 http 流的读取函数可能会永远阻止脚本。

我认为读取函数会超时并最终引发异常,但当连接在读取函数调用期间中断时,情况并非如此。

这是会导致问题的代码:

import urllib2

while True:
    try:
        stream = urllib2.urlopen('http://www.google.de/images/nav_logo4.png')
        while stream.read(): pass
        print "Done"
    except:
        print "Error"

(如果您尝试该脚本,您可能需要多次中断连接,然后才能达到脚本永远无法恢复的状态)

我通过 Winpdb 观看了该脚本,并制作了该脚本永远无法恢复的状态的屏幕截图(即使网络再次可用)。

Winpdb http://img10.imageshack.us/img10/6716/urllib2.jpg http://img10.imageshack.us/img10/6716/urllib2.jpg

有没有办法创建一个Python脚本,即使网络连接中断也能继续可靠地工作? (我宁愿避免在额外的线程中执行此操作。)


尝试类似的方法:

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

当连接中断时,读取 urllib2 生成的流永远不会恢复 的相关文章

随机推荐

  • 动态编辑 Tensorflow 对象检测的管道配置

    我正在使用tensorflow对象检测API 并且我希望能够在python中动态编辑配置文件 如下所示 我想过在 python 中使用协议缓冲区库 但我不知道如何去做 model ssd num classes 1 image resize
  • “支持的最低 Gradle 版本是 2.14.1。当前版本是 2.10。”错误[重复]

    这个问题在这里已经有答案了 我正在尝试升级我的 Android 应用程序 但收到以下错误 支持的最低 Gradle 版本为 2 14 1 当前版本是2 10 如果使用 gradle 包装器 请尝试将 C Users MyUser Deskt
  • 如何使用 Translate Toolkit 将 .po 转换为 PHP 数组(Zend Framework)?

    我正在尝试使用po2php http docs translatehouse org projects translate toolkit en latest commands php2po html将我的 po 文件转换为 Zend ph
  • Docusign:使用 REST API 和预填充标签通过模板创建信封

    我正在集成 Docusign 以便收件人可以看到他们的信封嵌入在我的网站上 我首先使用 api 创建信封 然后尝试使用动态数据预填充数据字段 据我所知 我用来创建信封的 json 没有任何问题 StackOverflow 上针对此问题的其他
  • 有没有办法将 QWidget 添加到 QtCreator 中的 QMenu

    我正在创建一个文本编辑器 我想把QComboBox in the QMenu 我在里面没有找到任何方法QMenu处理过这样的事情 最接近的是QMenu addAction 我想知道如何绕过这个障碍 Thanks 你必须子类化QWidgetA
  • 高斯模糊和卷积核

    我不明白什么是卷积核以及如何将卷积矩阵应用于图像中的像素 我说的是对图像进行高斯模糊操作 我还可以获得有关如何为高斯模糊操作创建内核的解释吗 我在读本文 http en wikipedia org wiki Gaussian blur但我似
  • 点击视口底部时阻止 Mobile Safari 显示工具栏

    我们有一个简单的移动应用程序在 iOS 上的 Mobile Safari MS 中运行 当用户向下滚动页面时n像素 一个 顶部 按钮从底部向上滑动 顶部按钮是固定位置 问题是 当您开始在 MS 中滚动时 导航和工具栏 UI 会被隐藏 当您点
  • 无法使用 servlet 和 jsp 更新表中的特定记录

    大家好 我为用户创建了一个 jsp 页面 他们可以在其中更新其现有详细信息 并且提交时记录会在数据库中更新 1 gt 帐户详细信息 java Java Servlet program responsible for obtaining th
  • Github:带有拉取请求的分叉

    我正在研究这段代码 https github com samvermette SVPullToRefresh https github com samvermette SVPullToRefresh 这有许多拉取请求待处理 但由于某种原因
  • 模拟子进程.Popen

    我有一个模块 utils py 它有这个 run cmd 方法 def run cmd cmd pipe subprocess Popen cmd shell True stdout subprocess PIPE stderr subpr
  • Linq 不同 - 计数

    我希望对示例对象列表执行查询 Date Username 01 01 2011 james 01 01 2011 jamie 01 01 2011 alex 01 01 2011 james 02 01 2011 matt 02 01 20
  • Friendly_id使用belongs_to关联中的值

    我有以下型号 class User lt ActiveRecord Base extend FriendlyId friendly id first name use gt slugged has one professor after c
  • C# 线程安全快速计数器

    在 C 中获得具有最佳性能的线程安全计数器的方法是什么 这很简单 public static long GetNextValue long result lock LOCK result COUNTER return result 但还有更
  • iOS14.2中的SwiftUI PageTabView会多次调用ChildView的onAppear方法

    我使用 TabView PageTabViewStyle 和 SwiftUI 来显示页面视图 当我滑动这个 TabView 时 我发现子视图会多次调用 onAppear 方法 有人可以告诉我为什么吗 这是我的代码 import SwiftU
  • 基于 C 有符号整数的攻击

    我正在读书这个问题 https stackoverflow com questions 21217126 memcpy implementation strict aliasing以及提到的评论之一基于 C 有符号整数的攻击 我知道什么是i
  • 如何在 std::set 中选择随机元素?

    如何在数组中选择一个随机元素std set 我天真地尝试过这个 int GetSample const std set
  • FFMPEG 到 YouTube 直播

    我有一个音频流 我使用 ffmpeg 将其流式传输到 youtube live 并使用以下命令将图像作为背景 ffmpeg loop 1 i x jpg i http xxx xxx xxx xxxx 5305 stream c a aac
  • 将 Pandas 数据框插入 Cassandra 表

    来自文档 https datastax github io python driver getting started html 有一种方法可以将数据插入表中 session execute INSERT INTO users name c
  • String_agg 用于多列

    我有以下选择 repairs DB select DB raw select r id repair id w name w surname from repairs r join repair worker rw on r id rw r
  • 当连接中断时,读取 urllib2 生成的流永远不会恢复

    在尝试使我的一个 Python 应用程序在连接中断时更加健壮时 我发现调用 urllib2 生成的 http 流的读取函数可能会永远阻止脚本 我认为读取函数会超时并最终引发异常 但当连接在读取函数调用期间中断时 情况并非如此 这是会导致问题