On Apr 8, 2:45 pm, "superhac...@gmail.com" <superhac...@gmail.com> wrote: > I am using the python module nfqueue-bindings which is a nfqueue > packet intercepting module. It uses the following snippet of code to > start the process: > > print "trying to run" > try: > q.try_run() > except KeyboardInterrupt, e: > print "interrupted" > > The q.try_run() method blocks. I would like to be able to interrupt > this the same way you can hit control-c to unblock it, but from > another thread. Does anyone have any idea on how to do this? Is > there some sort of Exception I can generate from another thread that > would do this?
The simplest and most reliable way will be to modify the asynchronous I/O example at https://www.wzdftpd.net/redmine/projects/nfqueue-bindings/repository/entry/examples/nfq_asyncore.py to do what you want. The classical way to accomplish this would be to create a second I/O descriptor (via os.pipe or similiar) and wait for that descriptor in the same async I/O loop. When you want to stop the loop, send a message (could be a single byte) to the second descriptor and then respond appropriately in your asynchronous I/O handler. However, simply ignoring the nfqueue socket while doing other processing might be acceptable too. I would read the documentation and ask questions carefully before taking that approach, as it may lead to lost data or other problems. The viability of this approach depends heavily on your application. Adam -- http://mail.python.org/mailman/listinfo/python-list