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

david at quanterium.zzn.com david at quanterium.zzn.com
Thu Feb 7 17:14:19 EST 2008


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)



More information about the Python-list mailing list