urllib2 FTP Weirdness
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Wed Jan 23 23:12:16 EST 2013
On Thu, 24 Jan 2013 01:45:31 +0100, Hans Mulder wrote:
> On 24/01/13 00:58:04, Chris Angelico wrote:
>> On Thu, Jan 24, 2013 at 7:07 AM, Nick Cash
>> <nick.cash at npcinternational.com> wrote:
>>> Python 2.7.3 on linux
>>>
>>> This has me fairly stumped. It looks like
>>> urllib2.urlopen("ftp://some.ftp.site/path").read()
>>> will either immediately return '' or hang indefinitely. But
>>> response = urllib2.urlopen("ftp://some.ftp.site/path")
>>> response.read()
>>> works fine and returns what is expected. This is only an issue with
>>> urllib2, vanilla urllib doesn't do it.
>>>
>>> The site I first noticed it on is private, but I can reproduce it with
>>> "ftp://ftp2.census.gov/".
>>
>> Confirmed on 2.6.5 on Windows, fwiw. This is extremely weird.
>
> It works fine with 2.7.3 on my Mac.
>
>> Possibly it's some kind of race condition??
>
> If urllib2 is using active mode FTP, then a firewall on your box could
> explain what you're seeing. But then, that's why active mode is hardly
> used these days.
Explain please?
I cannot see how the firewall could possible distinguish between using a
temporary variable or not in these two snippets:
# no temporary variable hangs, or fails
urllib2.urlopen("ftp://ftp2.census.gov/").read()
# temporary variable succeeds
response = urllib2.urlopen("ftp://ftp2.census.gov/")
response.read()
--
Steven
More information about the Python-list
mailing list