【问题标题】:Python GET Requests causing 100% CPU Usage SpikePython GET 请求导致 100% CPU 使用率飙升
【发布时间】:2014-12-04 17:12:31
【问题描述】:

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

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

【问题讨论】:

    标签: python http get python-requests


    【解决方案1】:

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

    INFO:requests.packages.urllib3.connectionpool:开始新的 HTTP 连接 (1): www.pricegrabber.com
    调试:requests.packages.urllib3.connectionpool:"GET / HTTP/1.1" 301 20
    调试:requests.packages.urllib3.connectionpool:"GET /index.php/ut=43bb2597a77557f5 HTTP/1.1" 301 20
    调试:requests.packages.urllib3.connectionpool:"GET /?ut=43bb2597a77557f5 HTTP/1.1" 301 20
    调试: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

    ...

    这会持续一段时间,直到:

    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
    

    【讨论】:

    • 我没有得到那个例外。我只得到 3 个重定向,它卡在 DEBUG:requests.packages.urllib3.connectionpool:"GET /?ut=324aba6b1a542668 HTTP/1.1" 301 20
    • 您的体验可能会因网站返回给您的内容而异。你能找出你使用的是什么版本的“请求”吗?
    • 请求 2.4.1。我要升级了,也许有这个问题的补丁。
    • 解决了!看起来我更新到 2.5.0 的 2.4.1 版本存在问题,但我收到了太多重定向
    • @digitaldavenyc 是的,这是 2.4.1 中的一个问题。 2.4.2 有一个发布错误(发布问题,而不是代码问题),但在 2.4.3 中已正确修复
    猜你喜欢
    • 2015-07-20
    • 2012-10-30
    • 1970-01-01
    • 2016-09-16
    • 2023-02-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多