2013-04-03 141 views
3

我正在开发一个下载管理器。使用python中的requests模块来检查一个有效的链接(希望破解的链接)。 我对下面的检查链接代码:现在python请求很慢

url='http://pyscripter.googlecode.com/files/PyScripter-v2.5.3-Setup.exe' 
    r = requests.get(url,allow_redirects=False) #this line takes 40 seconds 
    if r.status_code==200: 
     print "link valid" 
    else: 
     print "link invalid" 

,问题是这需要大约40秒钟,进行这种检查,这是巨大的。 我的问题是我怎么能加快这可能使用urllib2或东西?

注意:另外,如果我将url替换为“http://pyscripter.googlecode.com/files/PyScripter-v2.5.3-Setup.exe”的实际URL,则需要一秒钟的时间,因此这似乎是请求的问题。

回答

11

并非所有的主机支持head请求。您可以使用此代替:

r = requests.get(url, stream=True) 

这实际上只下载标题,而不是响应内容。而且,如果想法是在之后获取文件,则不必再提出其他请求。

查看here了解更多信息。

+0

嘿谢谢doukremt ...事实上,它显示404即使在某些情况下该项目在那里......谢谢! – scandalous

8

不要使用get实际检索文件,使用:

r = requests.head(url,allow_redirects=False) 

从6.9secs我的机器上进入0.4secs

+0

谢谢你jon。确实有些服务器不支持它.. – scandalous