图像下载问题(python)

时间:2010-11-28 05:07:41

标签: python multithreading

我试图用多线程下载图像,它在python中的max_count有限。

每次启动download_thread时,我都不管它并激活另一个。我希望下载过程可以在5s结束,这意味着如果打开网址的成本超过5s,下载失败。

但我怎么知道它并停止失败的线程???

1 个答案:

答案 0 :(得分:3)

你能说出你使用的是哪个版本的python吗? 也许你也可以发布一个片段。 从Python 2.6开始,urllib2.urlopen中添加了超时。 希望这会帮助你。它来自python docs。

  

urllib2.urlopen(url [,data] [,   超时])打开网址,可以   是一个字符串或一个请求   对象

     

警告HTTPS请求不执行任何操作   验证服务器的   证书。数据可以是字符串   指定要发送到的其他数据   服务器,如果没有这样的数据,则为None   需要。目前HTTP请求是   唯一使用数据的人; HTTP   请求将是POST而不是   GET是数据参数的时候   提供。数据应该是缓冲区   标准   应用程序/ x-WWW窗体-urlencoded   格式。 urllib.urlencode()   函数采用映射或序列   2元组并返回一个字符串   这种格式。 urllib2模块发送   HTTP / 1.1请求   连接:包括关闭标题。

     

可选的超时参数   指定以秒为单位的超时   像这样的阻止操作   连接尝试(如果未指定,   全局默认超时设置   将会被使用)。这实际上只是   适用于HTTP,HTTPS和FTP   连接。

     

此函数返回类似文件   对象有两个额外的方法:

     

geturl() - 返回的URL   检索资源,常用于   确定是否遵循重定向   info() - 返回元信息   的页面,如标题,在   mimetools.Message实例的形式   (请参阅HTTP标头的快速参考)   在错误时引发URLError。

     

请注意,如果不是,则可以返回None   处理程序处理请求(但是   默认安装的全局   OpenerDirector使用UnknownHandler   确保这种情况永远不会发生。)

     

另外,默认安装   ProxyHandler确保请求   通过代理处理时   他们已经确定了。

     

在2.6版中更改:超时为   加入。