Грекеты с запросами столкнулись
Я использую модуль Python grequests для вызова некоторых API. Я хочу сделать две функции.
- Один запрос (использовать модуль запросов)
- Многократный запрос (используйте модуль 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