Как решить эту ошибку "NotImplementedError" urllib2 / gevent в Windows? - PullRequest
4 голосов
/ 12 марта 2011

Я пытаюсь открыть URL с помощью urllib2, исправленного с помощью gevent в Windows XP:

from gevent import monkey
monkey.patch_all()
import urllib2

opener = urllib2.build_opener()
request = urllib2.Request("http://www.google.com")
response = opener.open(request)

И я получаю это исключение во время opener.open звонка:

File "C:\Python26\lib\site-packages\gevent\socket.py", line 768, in getaddrinfo
  sockaddr = (inet_ntop(AF_INET6, res), port, 0, 0)
File "C:\Python26\lib\site-packages\gevent\socket.py", line 133, in inet_ntop
  raise NotImplementedError('inet_ntop() is not available on this platform')
NotImplementedError: inet_ntop() is not available on this platform
<SERPScrapper at 0xbc0f60> failed with NotImplementedError

Глядя на исходный код gevent socket.py, похоже, что он связан с IPV6 в Windows ...

Любая идея или предложение, чтобы решить эту проблему?

edit: У меня не возникает проблема с другим URL (например: http://www.bing.com). Похоже, что Google использует IPV6. Есть ли способ заставить ответ IPV4?

1 Ответ

2 голосов
/ 13 марта 2011

Попробуйте вместо этого сделать запрос на http://ipv4.google.com/.

...