f



IOError: [Errno 32] Broken pipe #2

I have a problem with the logging module.

It reports a Broken Pipe error after outputing to the log file 
occasionally (5%). This does not appear to happen on Mac OSX using 
current finked python (2.3.3) but does appear to occur on Python 2.3.4 
running on a very old Redhat Linux xxxxx 2.2.14-5.0 #1 Tue Mar 7 
21:07:39 EST 2000 i686. The actual logged error follows my signature. 
Note that "files used:-" has been sent to the file.

 From a previous suggestion I had the following lines in my logger setup.

import logging
import signal
import types
logger = logging.getLogger('pathprofile')
hdlr = logging.FileHandler('/var/log/pathprofile/pathprofile.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)
signal.signal(signal.SIGPIPE, signal.SIG_DFL) # for assynchronous 
logging

Thanks for any enlightenment.

Nigel King

2004-09-27 08:15:24,864 INFO files used:-
2004-09-27 08:15:24,865 ERROR [Errno 32] Broken pipe
Traceback (most recent call last):
   File "/home/pathprofile/public_html/PathProfile/ProcessEmail.py", 
line 42, in ?
     emod.processEmail(conf)
   File 
"/home/pathprofile/public_html/PathProfile/modules/emailmodules.py", 
line 253, in processEmail
     PathProfile.EvaluateProfile(fld, conf)
   File 
"/home/pathprofile/public_html/PathProfile/modules/PathProfile.py", 
line 66, in EvaluateProfile
     remoteheight= fld['remoteheight'])
   File 
"/home/pathprofile/public_html/PathProfile/modules/HeightFile.py", line 
680, in createPathFile
     filesUsed()
   File 
"/home/pathprofile/public_html/PathProfile/modules/HeightFile.py", line 
637, in filesUsed
     log.logger.info('files used:-')
   File "/usr/local/lib/python2.3/logging/__init__.py", line 893, in info
     apply(self._log, (INFO, msg, args), kwargs)
   File "/usr/local/lib/python2.3/logging/__init__.py", line 994, in _log
     self.handle(record)
   File "/usr/local/lib/python2.3/logging/__init__.py", line 1004, in 
handle
     self.callHandlers(record)
   File "/usr/local/lib/python2.3/logging/__init__.py", line 1037, in 
callHandlers
     hdlr.handle(record)
   File "/usr/local/lib/python2.3/logging/__init__.py", line 592, in 
handle
     self.emit(record)
   File "/usr/local/lib/python2.3/logging/__init__.py", line 684, in emit
     self.handleError(record)
   File "/usr/local/lib/python2.3/logging/__init__.py", line 636, in 
handleError
     traceback.print_exception(ei[0], ei[1], ei[2], None, sys.stderr)
   File "/usr/local/lib/python2.3/traceback.py", line 122, in 
print_exception
     _print(file, 'Traceback (most recent call last):')
   File "/usr/local/lib/python2.3/traceback.py", line 13, in _print
     file.write(str+terminator)
IOError: [Errno 32] Broken pipe

0
9/29/2004 2:59:17 PM
comp.lang.python 77058 articles. 6 followers. Post Follow

3 Replies
803 Views

Similar Articles

[PageSpeed] 9

Nigel King <nigel.king@orthogonsystems.com> wrote in message news:<mailman.4079.1096469961.5135.python-list@python.org>...
> I have a problem with the logging module.
> 
> It reports a Broken Pipe error after outputing to the log file 
> occasionally (5%). This does not appear to happen on Mac OSX using 
> current finked python (2.3.3) but does appear to occur on Python 2.3.4 
> running on a very old Redhat Linux xxxxx 2.2.14-5.0 #1 Tue Mar 7 
> 21:07:39 EST 2000 i686. The actual logged error follows my signature. 
> Note that "files used:-" has been sent to the file.
[snip]

This does not seem to be an error with the logging module itself, but
due to the fact that a write to sys.stderr (from the traceback module)
causes the error to be raised. Are you sure that all you need to do is
to set default signal handling for SIGPIPE?

If you set raiseExceptions to false in the logging module, no
exceptions will be raised by the logging module. Otherwise, you can
subclass the handler and override handleError() to treat EPIPE
appropriately.

Regards,


Vinay Sajip
0
vinay_sajip (338)
10/5/2004 1:15:30 PM
On 5 Oct 2004, at 17:15, Vinay Sajip wrote:

> Are you sure that all you need to do is
> to set default signal handling for SIGPIPE?

I am not sure at all. Since your email I have reviewed your 
documentation and now see the raiseExceptions variable. I presume that 
I simply use
logging.raiseExceptions = False
after
import logging

I used signal.SIGPIPE after googling for Broken Pipe. I think I will 
remove that line.

Random tests I have devised have not revealed this error but Random 
input from others has generated the problem, usually after a burst of 
activity when previously there has been no activity for several days. 
Coincidence?

Thank you very much for your help - and a very useful module.

Nigel King

0
King2862 (1)
10/9/2004 2:37:05 PM
> documentation and now see the raiseExceptions variable. I presume that 
> I simply use
> logging.raiseExceptions = False
> after
> import logging

Yes.
 
> Random tests I have devised have not revealed this error but Random 
> input from others has generated the problem, usually after a burst of 
> activity when previously there has been no activity for several days. 
> Coincidence?

Perhaps not. It may be that the pipe breaks after a period of
inactivity, and subsequent activity shows up the break.

Best of luck,

Vinay
0
vinay_sajip (338)
10/11/2004 2:31:41 PM
Reply: