当前位置: 首页 > 面试题库 >

处理urllib2的超时?-Python

颛孙凯定
2023-03-14
问题内容

我正在urllib2的urlopen中使用timeout参数

urllib2.urlopen('http://www.example.org', timeout=1)

我如何告诉Python,如果超时到期,应该引发自定义错误?

有任何想法吗?


问题答案:

在极少数情况下要使用except:。这样做会捕获可能很难调试的 任何
异常,并且会捕获包括SystemExit和在内的异常KeyboardInterupt,这些异常会使您的程序恼人。

最简单的说,您会发现urllib2.URLError

try:
    urllib2.urlopen("http://example.com", timeout = 1)
except urllib2.URLError, e:
    raise MyException("There was an error: %r" % e)

以下内容应捕获连接超时时引发的特定错误:

import urllib2
import socket

class MyException(Exception):
    pass

try:
    urllib2.urlopen("http://example.com", timeout = 1)
except urllib2.URLError, e:
    # For Python 2.6
    if isinstance(e.reason, socket.timeout):
        raise MyException("There was an error: %r" % e)
    else:
        # reraise the original error
        raise
except socket.timeout, e:
    # For Python 2.7
    raise MyException("There was an error: %r" % e)


 类似资料:
  • 问题内容: 我最近尝试使用多处理模块(和它的)来加速一个小工具(使用urllib2将请求发送到(非官方)twitter-button-count-url(> 2000 url)并解析其结果)工人池)。我在这里阅读了一些有关多线程(与标准的非线程版本相比,它使整个过程变慢)和多处理的讨论,但是我找不到(可能非常简单)问题的答案: 您可以通过多处理来加速url调用吗,还是不是像网络适配器那样的瓶颈?我

  • 问题内容: 我想使用multiprocessing.Pool,但是multiprocessing.Pool不能在超时后中止任务。我找到了解决方案,并对其进行了一些修改。 主要修改-使用 sys.exit(1) 退出工作进程。它杀死了工作进程并杀死了工作线程,但是我不确定这个解决方案是否很好。当进程因正在运行的作业而终止时,我会遇到哪些潜在的问题? 问题答案: 停止正在运行的作业没有隐含的风险,操作

  • 问题内容: 我试图用一个批量一些 KTable 值,并送他们。似乎30秒钟超出了使用者超时间隔,在此间隔之后,Kafka认为该使用者已失效并释放了分区。 我尝试提高 轮询 和 提交间隔 的频率来避免这种情况: 不幸的是,这些错误仍在发生: (很多) 其次是: 显然,我需要更频繁地将心跳发送回服务器。怎么样? 我的拓扑是: 该 KTable 是关键,每30秒分组值。在 Processor.init(

  • 前言 sender的run 调用done方法,并传入TimeoutException

  • 问题内容: 我打开网址: 我想做的就是以相同的方式连接到我在某处告诉我的代理: 但这也不起作用。 我知道urllib2具有类似代理处理程序的功能,但是我无法回忆起该功能。 问题答案:

  • 问题内容: 我打开网址: 我想做的是用同样的方式连接到我在某处告诉我的代理: 但这也不起作用。 我知道urllib2具有类似代理处理程序的功能,但是我不记得该功能了。 问题答案: