Ctrl-C无法正确关闭多线程Python(+ Flask)程序
我在使用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这两个套接字选项。这个错误的意思是,你在之前的连接还没完全关闭的时候,就试图重新绑定一个端口。