[Web-SIG] wsgi.errors and close method

Manlio Perillo manlio_perillo at libero.it
Tue Mar 30 11:28:07 CEST 2010


Graham Dumpleton ha scritto:
> [...]

>> Here is the culprit:
>> http://lists.alioth.debian.org/pipermail/python-modules-team/2009-January/003514.html
>> http://code.google.com/p/modwsgi/issues/detail?id=82
>>
>> So it seems safe, when the Log object used in wsgi.errors is also used
>> to replace sys.stderr, to just add the closed attribute (but *not* the
>> close method).
> 
> It is all very silly. Technically a file like object is not required
> to have a 'closed' attribute, so that code expecting it was wrong in
> the first place.
> 
>   http://docs.python.org/library/stdtypes.html#file-objects
> 

Right, thanks; I did not notice it.

Note however, that Mercurial has fixed the problem:

# stderr may be buffered under win32 when redirected to files,
# including stdout.
if not getattr(sys.stderr, 'closed', False):
    sys.stderr.flush()


I would probably do something like:
try:
    sys.stderr.flush()
except:
    pass


> The close() method is however required of file like objects so if you
> are going to replace a file like object, you should have it.
> 

Yes, I should.
But since they should raise an exception, raising AttributeError,
instead, should not be a critical problem.


Manlio


More information about the Web-SIG mailing list