grequests 与 requests 发生冲突
grequests with requests has collision
我正在使用 grequests python 模块来调用一些 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...
是否可以在一个文件中使用请求和 grequests?
是的。
在 grequests 之后导入 requests。
这是关于此的 open issue。
这是唯一对我有用的东西(Python 3.8.6,一个模块需要导入 grequests
和 requests
)(source)。这应该在所有其他导入之前:
from gevent import monkey
def stub(*args, **kwargs): # pylint: disable=unused-argument
pass
monkey.patch_all = stub
import grequests
我正在使用 grequests python 模块来调用一些 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...
是否可以在一个文件中使用请求和 grequests?
是的。 在 grequests 之后导入 requests。 这是关于此的 open issue。
这是唯一对我有用的东西(Python 3.8.6,一个模块需要导入 grequests
和 requests
)(source)。这应该在所有其他导入之前:
from gevent import monkey
def stub(*args, **kwargs): # pylint: disable=unused-argument
pass
monkey.patch_all = stub
import grequests