1

プロキシサーバーでネットを使用しています

 self.wp = site if site else mwclient.Site(self.url)

上記の行に遭遇すると、次のエラーが表示されます

 File "C:\Python27\lib\site-packages\mwclient-0.6.5-py2.7.egg\mwclient\client.py", line 92, in __init__
    self.site_init()
  File "C:\Python27\lib\site-packages\mwclient-0.6.5-py2.7.egg\mwclient\client.py", line 100, in site_init
    siprop = 'general|namespaces', uiprop = 'groups|rights')
  File "C:\Python27\lib\site-packages\mwclient-0.6.5-py2.7.egg\mwclient\client.py", line 165, in api
    info = self.raw_api(action, **kwargs)
  File "C:\Python27\lib\site-packages\mwclient-0.6.5-py2.7.egg\mwclient\client.py", line 248, in raw_api
    json_data = self.raw_call('api', data).read()
  File "C:\Python27\lib\site-packages\mwclient-0.6.5-py2.7.egg\mwclient\client.py", line 223, in raw_call
    url, data = data, headers = headers)
  File "C:\Python27\lib\site-packages\mwclient-0.6.5-py2.7.egg\mwclient\http.py", line 225, in post
    return self.find_connection(host).post(host,
  File "C:\Python27\lib\site-packages\mwclient-0.6.5-py2.7.egg\mwclient\http.py", line 218, in find_connection
    conn = cls(host, self)
  File "C:\Python27\lib\site-packages\mwclient-0.6.5-py2.7.egg\mwclient\http.py", line 62, in __init__
    self._conn.connect()
  File "C:\Python27\lib\httplib.py", line 757, in connect
    self.timeout, self.source_address)
  File "C:\Python27\lib\socket.py", line 571, in create_connection
    raise err
error: [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

次の手順でurllib2を使用してプロキシを設定しようとしましたが、役に立ちませんでした

>>> import urllib2
>>> auth = 'http://xxxxx:xxxx@10.1.9.30:8080'
>>> handler = urllib2.ProxyHandler({'http':auth})
>>> opener = urllib2.build_opener(handler)
>>> urllib2.install_opener(opener)
4

1 に答える 1

0

これは少し古いですが、昨日同じ問題に直面しました。他の人に役立つ可能性があるため、ここに解決策を投稿します。

mwclinet / http.pyファイルを変更して、なんとか整理できました。基本的に、環境変数http_proxyが存在するかどうかを確認し、直接ではなくプロキシを介して接続します。

クラスclass HTTPPersistentConnection(object):で変数を追加しましたusesProxy = False。61行目あたりで次のように置き換えましself._conn = self.http_class(host)た。

    http_proxy_env = os.environ.get('http_proxy')
    if http_proxy_env is not None:
      try:
        # proxy
        http_proxy_url = urlparse.urlparse(http_proxy_env)
        http_proxy_host,http_proxy_port = http_proxy_url.netloc.split(':')
        self._conn = self.http_class(http_proxy_host,int(http_proxy_port))
        self.usesProxy=True;
      except:
        self._conn = self.http_class(host)
    else: 
      self._conn = self.http_class(host)

次に、次の2つのオカレンスを置き換えましたself._conn.request(method, path, ....)。94行目:

  if self.usesProxy is False:
    self._conn.request(method, path, headers = headers)
  else:
    self._conn.request(method, "http://"+host+path, headers = headers)

そして107行目で:

if self.usesProxy is False:
  self._conn.request(method, path, data, headers)
else:
  self._conn.request(method, "http://"+host+path, data, headers)

それは仕事をするはずです!

于 2013-04-25T08:36:20.487 に答える