2014-12-04 71 views
0

我正在使用python请求库(版本2.4.1)执行一个简单的get请求,代码如下,在这里没有什么奇怪的。在大多数网站上都没有问题。但在某些网站上,特别是www.pricegrabber.com,我经历了100%的CPU使用率,并且代码永远不会超过获取请求的位置。没有超时发生,没有什么,只是一个巨大的CPU使用率永远不会停止。导致CPU使用率达到100%的Python GET请求Spike

import requests 
url = 'http://www.pricegrabber.com' 
r = requests.get(url, timeout=(1, 1)) 
print 'SUCESS' 
print r 

回答

4

使用Python 2.7,该“要求”库的最新稳定版本,并启用日志记录为shown in this answer表示HTTP请求被卡在重定向循环。

INFO:requests.packages.urllib3.connectionpool:启动新的HTTP连接(1):www.pricegrabber.com
DEBUG:requests.packages.urllib3.connectionpool: “GET/HTTP/1.1” 301 20
DEBUG:requests.packages.urllib3.connectionpool:“GET /index.php/ut=43bb2597a77557f5 HTTP/1.1”301 20
DEBUG:requests.packages.urllib3.connectionpool:“GET /?ut = 43bb2597a77557f5 HTTP/1.1 “301 20
DEBUG:requests.packages.urllib3.connectionpool:”GET /?ut = 43bb2597a77557f5 HTTP/1.1“301 20
DEBUG:requests.packages.urllib3.connectionpool:”GET /?ut = 43bb2 597a77557f5 HTTP/1.1" 301 20

...

这继续一点,直到:

requests.exceptions.TooManyRedirects:超过30个重定向。

我以前常常发现这个代码:

#!/usr/bin/env python 

import logging 
import requests 

logging.basicConfig(level=logging.DEBUG) 

url = 'http://www.pricegrabber.com' 
r = requests.get(url, timeout=(1, 1)) 

print 'SUCCESS' 
print r 
+0

我没有得到例外。我只收到3个重定向,并且它停留在DEBUG上:requests.packages.urllib3.connectionpool:“GET /?ut = 324aba6b1a542668 HTTP/1.1”301 20 – digitaldavenyc 2014-12-04 17:54:01

+0

根据网站返回的信息,您的体验可能会有所不同。你能找出你使用的是什么版本的'请求'吗? – 2014-12-04 17:55:45

+0

请求2.4.1。我要升级也许这个问题有一个补丁。 – digitaldavenyc 2014-12-04 17:57:18