Грекеты с запросами столкнулись

Я использую модуль Python grequests для вызова некоторых 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...

Можно ли использовать запросы и запросы в одном файле?

2 ответа

Решение

Да. Импортировать запросы после грестов. Вот открытый вопрос об этом.

Это единственное, что у меня сработало (Python 3.8.6, модуль нуждался в импорте grequestsа также requests) (источник). Это должно предшествовать всем другим импортам:

      from gevent import monkey
def stub(*args, **kwargs):  # pylint: disable=unused-argument
    pass
monkey.patch_all = stub
import grequests
Другие вопросы по тегам