Using a signal to terminate a programm running with an asyncore loop

Larry Bates larry.bates at websafe.com
Fri Feb 8 10:04:11 EST 2008


david at quanterium.zzn.com wrote:
> I'm developing a program that runs using an asyncore loop.  Right now
> I can adequately terminate it using Control-C, but as things get
> refined I need a better way to stop it.  I've developed another
> program that executes it as a child process using popen2.Popen4().  I
> was attempting to use signals to stop it (using os.kill()) but I keep
> running into a problem where sending the signal causes an infinite
> loop of printing the message "warning: unhandled exception".  This
> message appears to be coming from asyncore.py.
> 
> Searching online I've found this old post that describes setting up a
> signal handler using signal.signal():
> 
> http://mail.python.org/pipermail/medusa-dev/2000/000571.html
> 
> I've tried it but I don't see any indication that my handler method is
> being called.  My best guess is that something somewhere else is
> overriding my signal handling callbacks and sending the signals
> elsewhere until they make their way into asyncore where they cause the
> error message.
> 
> Any other ideas on how to get this to work?  If there's a different
> signal I can use that other code won't override, that's fine (I don't
> care what the signal is, as long as I can catch it).  Or perhaps there
> is something different I can do?  The program, at present, doesn't
> have much in the way of an internal shutdown mechanism.
> 
> I'm using Python 2.5.1 on Fedora 8; the program does not need to be
> portable to Windows.
> 
> - David
> 
> (p.s. please post replies on the list; this email address doesn't work
> so I won't see any replies sent directly to me)

Please share a little of the code you used to "catch" the signal.  What 
signal(s) are you catching?  What kill level are you sending (these have to 
match up).  I've used this quite successfully in some of my programs.

-Larry




More information about the Python-list mailing list