I've been trying to use grequests for asyncronous HTTP requests in my Python project, however I got an AttribteError and have been searching for solution for hours.
Here's my testing code:
import grequests
urls = ['htt://google.com', 'http://yahoo.com', 'http://bing.com']
unsent_request = (grequests.get(url) for url in urls)
results = grequests.map(unsent_request)
print(results)
And the error message:
Traceback (most recent call last):
File "<censored>", line 1, in <module>
import grequests
File "C:\Python34\lib\site-packages\grequests.py", line 21, in <module>
curious_george.patch_all(thread=False, select=False)
File "C:\Python34\lib\site-packages\gevent\monkey.py", line 195, in patch_all
patch_socket(dns=dns, aggressive=aggressive)
File "C:\Python34\lib\site-packages\gevent\monkey.py", line 124, in patch_socket
from gevent import socket
File "C:\Python34\lib\site-packages\gevent\socket.py", line 119, in <module>
_fileobject = __socket__._fileobject
AttributeError: 'module' object has no attribute '_fileobject'
I've tried to uninstall and re-install both grequests and the whole Python, however the problem still exists.
I also tried to avoid using grequest (and use gevent), but the same problem happened.
After some search, I believe the closest problem I can find is this one:
python3: socket._fileobject removed #434
But it seems not very trivial for me, and the solution provided is for SSL-related stuff.
If you have any solution or similar problem please share, thank you very much!
I encountered the same problem. After
pip3 install --user --upgrade gevent==1.1rc3
the code executed without problems (--user
is optional).