7

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

  1. 单个请求(使用请求模块)
  2. 多个请求(使用 grequests 模块)

当我在两个不同的文件中使用两个模块时,它运行正常,但是当我在同一个文件中导入两个模块时,请求模块陷入无限递归。

  #!/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...

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

4

2 回答 2

13

是的。在grequests之后导入请求。这是一个关于此的未解决问题

于 2017-08-09T15:22:07.170 回答
0

这是唯一对我有用的东西(Python 3.8.6,一个模块需要导入grequestsand requests)(source)。这应该在所有其他导入之前:

from gevent import monkey
def stub(*args, **kwargs):  # pylint: disable=unused-argument
    pass
monkey.patch_all = stub
import grequests
于 2021-12-19T12:07:12.847 回答