3

我正在尝试使用来自多处理库的池中的 grequests 进行异步 http 调用。我遇到的问题表明 Grequests 和 multiprocessing 可能彼此不兼容;具体来说,调用monkey.patch_all()池创建混乱。

最初,没有调用monkey.patch_all()我的代码:

from gevent import monkey
monkey.patch_all()

我得到这两个错误:

NotImplementedError: gevent is only usable from a single thread

requests.exceptions.ConnectionError: None: Max retries exceeded with url: SOME_URL (Caused by redirect)

调用monkey.patch_all()修复了上述错误,但导致我的代码挂在:

p = Pool(THREAD_POOL_SIZE)

不调用monkey.patch_all()会导致我的池成功创建。调用monkey.patch_all(thread=False, socket=False)也会导致我的 Pool 创建成功,但不能解决最初的两个错误。

4

0 回答 0