Downloading huge files via urllib

Andrew Markebo flognat at flognat.myip.org
Tue Sep 24 05:44:11 EDT 2002


| response = urllib.urlretrieve(serverURL, 'run.log')
| 
| However, I then get a MemoryError.  Tracking down the source of the
| error, I see the offending function in httplib:
| 
|     def makefile(self, mode, bufsize=None):
|         """Return a readable file-like object with data from socket.
[...]
|         The returned object contains *all* of the file data
|         """
| 
| I think the problem is that bufsize argument that is ignored.  Does

Read the docs, and you will see "the bufsize argument is ignored" and
"The returned object contains *all* of the file data", so it tries to
squeeze in 20 megs there.. 

| anyone know if this is correct, and what I can do about it?  I would
| like to automate the process of downloading this file, but is it
| possible?

Maybe read directly with recv() from the [Fake]Socket instead of doing
makefile.. And well this requires you probably to use httplib instead
of urllib, shouldn't be any problems I think.

Or maybe throw an eye at my implementation on the http-standard,
should be able to chew https also, http://flognat.myip.org/hacks/ it
is webification.tgz that might interest you.

        /Andy

-- 
 The eye of the beholder rests on the beauty!



More information about the Python-list mailing list