Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #73893
| From | Sangeeth Saravanaraj <sangeeth.saravanaraj@gmail.com> |
|---|---|
| Subject | threading.Condition.wait() is not catching SIGTERM |
| Date | 2014-07-03 15:45 +0530 |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.11450.1404382552.18130.python-list@python.org> (permalink) |
[Multipart message — attachments visible in raw view] - view raw
Hi All,
I have the following code which when executed waits to be interrupted by SIGINT, SIGTERM or SIGQUIT. When an object is initialized, it creates a threading.Condition() and acquires() it! The program then registers the signal handlers where notify() and release() is called when the above mentioned signals are received. After registering the signal handlers, it calls wait() on the condition variable and block.
When I tried to stop the program with Ctrl-C, its did not respond. IOW, the _signal_handler() method did not get called.
# start
from signal import signal, SIGINT, SIGTERM, SIGQUIT
from threading import Condition
class A:
def __init__(self):
self._termination_signal = Condition()
self._termination_signal.acquire(blocking=0)
def _signal_handler(self, signum, frame):
print "Received terminate request - signal = {0}".format(signum)
del frame
self._termination_signal.notify()
self._termination_signal.release()
return
def register_and_wait(self):
signal(SIGINT, self._signal_handler)
signal(SIGTERM, self._signal_handler)
signal(SIGQUIT, self._signal_handler)
print "Waiting to be interrupted!"
self._termination_signal.wait() # control blocks here!
print "Notified!!"
def main():
a = A()
a.register_and_wait()
if __name__ == "__main__":
main()
# end
What am I doing wrong?!
Thank you,
Sangeeth
Back to comp.lang.python | Previous | Next — Next in thread | Find similar | Unroll thread
threading.Condition.wait() is not catching SIGTERM Sangeeth Saravanaraj <sangeeth.saravanaraj@gmail.com> - 2014-07-03 15:45 +0530
Re: threading.Condition.wait() is not catching SIGTERM Roy Smith <roy@panix.com> - 2014-07-03 06:19 -0400
Re: threading.Condition.wait() is not catching SIGTERM Sangeeth Saravanaraj <sangeeth.saravanaraj@gmail.com> - 2014-07-03 15:57 +0530
Re: threading.Condition.wait() is not catching SIGTERM Chris Angelico <rosuav@gmail.com> - 2014-07-03 20:33 +1000
csiph-web