I do not work for Google, so this is just an assumption from the various GAE posts I read. App Engine instances do not access the Internet directly, but hide behind layers of Googleβs infrastructure. When the browser makes an HTTP request, it does not go directly to your instance, but rather gets to the Google Edge server, which ultimately routes the request to the GAE instance.
Similarly, when you send an HTTP request, your instance does not just open the socket (usually urllib2), but rather sends an HTTP request to some other Google Edge server that sends this HTTP request. Using urllib2 in GAE will use a specific version of GAE that runs on top of urlfetch.
source share