The list is not the problem. The problem is the other reference, from "<socket._fileobject object at 0xf7d42c34>".
Also note that the workaround (u.fp.recv = None) removes the second reference.
On the other hand, it should also be noted that in close method, the socket is not explicitly closed and for a single urlopen, atleast 3 sockets are opened.