带请求的grequests有冲突

时间:2017-04-03 11:23:09

标签: python django ssl python-requests grequests

我正在使用grequests python模块来调用一些API。我想做两个功能。

  1. 单个请求(使用请求模块)
  2. 多个请求(使用grequests模块)
  3. 当我在两个不同的文件中使用两个模块时,它会正常运行,但是当我在同一个文件中导入两个模块时,请求模块会无限递归。

      #!/usr/bin/env python                                                                                                                                                                                          
      #-*- encoding:utf-8 -*-                                                                                                                                                                                        
    
      import requests                                                                                                                                                                                                
      import grequests                                                                                                                                                                                               
    
      def SingleRequest():                                                                                                                                                                                           
          rs = requests.get("www.example.com")                                                                                                                                                                          
          return rs                                                                                                                                                                                             
    
      def MultiRequest():                                                                                                                                                                                            
          urls = [                                                                                                                                                                                                   
              "www.example1.com", 
              "www.example2.com",  
              "www.example3.com"                                                                                                
          ]                                                                                                                                                                                                          
          rs = [grequests.get(u) for u in urls]                                                                                                                                                        
          rs_map = grequests.map(rs);                                                                                                                                                                                
          return rs_map;       
    

    如果我调用MultiRequest() - >做得好!

    但如果我调用SingleRequest().....↓

    Exception Type: RecursionError
    Exception Value: maximum recursion depth exceeded
    Exception Location: /usr/local/lib/python3.6/ssl.py in options, line 459
    
    /usr/local/lib/python3.6/ssl.py in options
         super(SSLContext, SSLContext).options.__set__(self, value) X 100 times...
    

    是否可以在一个文件中使用请求和 grequests

1 个答案:

答案 0 :(得分:4)

是。 在 grequests 之后导入请求。 这是关于此的open issue