Python 中断 SIGINT 上的套接字接收

Python break from socket receive on SIGINT

我正在开发一个从套接字接收数据的程序,当发送信号时,我希望能够中断接收。

我现在拥有的:

class Killer: 
    die = False
    def __init__(self):
        signal.signal(signal.SIGINT, self.terminate)
        signal.signal(signal.SIGTERM, self.terminate)

    def terminate(self, signum, frame):
        print ("caught " + str(signum))
        self.die = True;

sock = socket.socket()
# Generic socket setup

while (~killer.die):
    #generic data setup
    sock.receive(data)

sock.shutdown(socket.SHUT_RDWR)

当中断被捕获时,它打印然后返回等待。

有没有办法在接收到信号时中断接收?

自 Python 3.5 起,中断的系统调用是 automatically resumed 在调用 (Python) 信号处理程序之后。如果您不想那样,请在您的处理程序中引发异常。