1

urllib2 ライブラリを使用して URL をフェッチする GAE を使用して Web アプリケーションを構築しています。

誰かがこのコードの理由を説明してくれませんか:

import webapp2
import urllib2

class BaseHandler(webapp2.RequestHandler):      
    def write(self, *a, **kw):
        self.response.out.write(*a, **kw)


class MainPage(BaseHandler):
    def get(self):
        self.write(urllib2.urlopen("http://www.google.com").read())


app = webapp2.WSGIApplication([("/", MainPage)], debug = True)

ローカル環境でアクセスすると次の例外がスローされますが、デプロイすると意図したとおりに動作しますか?

Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1535, in __call__
    rv = self.handle_exception(request, response, e)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1529, in __call__
    rv = self.router.dispatch(request, response)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1278, in default_dispatcher
    return route.handler_adapter(request, response)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1102, in __call__
    return handler.dispatch()
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 572, in dispatch
    return self.handle_exception(e, self.app.debug)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 570, in dispatch
    return method(*args, **kwargs)
  File "C:\Users\Developer\Desktop\test\main.py", line 15, in get
    self.write(urllib2.urlopen("http://www.google.com").read())
  File "C:\Python27\lib\urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "C:\Python27\lib\urllib2.py", line 400, in open
    response = self._open(req, data)
  File "C:\Python27\lib\urllib2.py", line 418, in _open
    '_open', req)
  File "C:\Python27\lib\urllib2.py", line 378, in _call_chain
    result = func(*args)
  File "C:\Python27\lib\urllib2.py", line 1207, in http_open
    return self.do_open(httplib.HTTPConnection, req)
  File "C:\Python27\lib\urllib2.py", line 1180, in do_open
    r = h.getresponse(buffering=True)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\dist27\httplib.py", line 507, in getresponse
    'An error occured while connecting to the server: %s' % e)
error: An error occured while connecting to the server: Unable to fetch URL: http://www.google.com Error: [Errno 10106] getaddrinfo failed

urllib2 をインタープリターから使用すると、意図したとおりに動作することに注意してください。

また、フェッチが IP アドレスで行われる場合、アプリは意図したとおりに動作します。例えば

self.write(urllib2.urlopen("http://173.194.42.34").read())

注:私はすでに別のアカウントでこれを尋ねましたが、スパムの意図ではなく、別のメールで SO にアクセスしていることに気づきませんでした。むしろ、この質問はより簡単で、コード + スタック トレースは私の問題についてより有益です

4

0 に答える 0