Search code examples
google-app-enginebandwidthquota

why my app reaches GAE `Incoming Bandwidth` while it just fetches tiny content


My app use urllib2 to fetch remote http file. But it does not fetch the whole file, it just read 5 bytes from it. I purposely do that to save quota. As the line 'content = remoteFileFh.read(5)' below does.

def httpGetFile(self,remoteFile):    
    print 'downloading %s...'%remoteFile,
    remoteFileFh = urllib2.urlopen(remoteFile)
    content = remoteFileFh.read(5)
    print 'content:%s' % content
    remoteFileFh.close()
    print 'done.'

But it seems it still consume 'Incoming Bandwidth' as soon as fetching the whole file. Why? how Google host service calculate that?


Solution

  • The URLfetch service doesn't support fetching partial content. On App Engine, urllib2 is just a wrapper over urlfetch, so the whole response is fetched and made available to your application whether you read it all or not.