requests + grequests:"连接池已满,丢弃连接:"警告相关?

时间:2016-11-29 18:01:04

标签: python python-2.7 python-requests grequests

我在localhost上托管服务器,我希望异步发出数百个GET请求。为此我使用grequests。一切出现以便正常工作但我反复收到警告:

  

警告:requests.packages.urllib3.connectionpool:连接池已满,丢弃连接:date.jsontest.com

搜索显示在Session()中创建requests时如何避免完整池问题,例如here。但是,有几件事:

  1. 即使我不采取任何措施来避免警告,我似乎也始终如一地得到了预期的结果。如果我确实使用了解决方法,那么超过pool_maxsize数量的任何请求都会发出警告。
  2. 如果请求数超过池大小,链接的解决方法仍会导致警告。我假设会有某种限制来防止任何时候超出游泳池大小
  3. 我似乎找不到禁用警告的方法。 requests.packages.urllib3.disable_warnings()似乎无能为力。
  4. 所以我的问题是:

    1. 这个警告实际意味着什么?我的解释是它只是放弃了解雇的请求,但似乎并非如此。
    2. 此警告是否与grequests库实际相关,尤其是当我采取措施限制池大小时?我是否会在测试中引发意外行为并使我的预期结果失效?
    3. 有没有办法禁用它?
    4. 要测试的一些代码:

      import grequests
      import requests
      
      requests.packages.urllib3.disable_warnings() # Doesn't seem to work?
      
      session = requests.Session()
      
      # Hashing the below will cause 105 warnings instead of 5
      adapter = requests.adapters.HTTPAdapter(pool_connections=100, 
                                                  pool_maxsize=100)
      session.mount('http://', adapter)
      
      # Test query
      query_list = ['http://date.jsontest.com/' for x in xrange(105)]
      
      rs = [grequests.get(item, session=session) for item in query_list]
      responses = grequests.map(rs)
      print len([item.json() for item in responses])
      

0 个答案:

没有答案