Ctrl-C无法正确关闭多线程Python(+ Flask)程序

1 投票
1 回答
1422 浏览
提问于 2025-04-18 15:58

我在使用OS-X系统,利用flask库来做一个小的API。

通常情况下,当我按下Ctrl-C来结束这个程序时,它会抛出一个叫KeyboardInterrupt的错误,但现在却出现了socket.error: [Errno 48] Address already in use这个错误。之后,再想重启程序时也会出现同样的错误。以前这种情况偶尔会发生,但现在似乎每次都会这样。活动监视器显示Python进程仍在运行,并且有3个线程。

解决办法是从活动监视器中退出这个进程。

为什么这个进程不再正常结束了(注意:我用的是Ctrl-C,而不是Ctrl-Z),有没有办法解决这个小麻烦呢?

1 个回答

0

你可能需要设置一下SO_REUSEPORT和SO_REUSEADDR这两个套接字选项。这个错误的意思是,你在之前的连接还没完全关闭的时候,就试图重新绑定一个端口。

撰写回答