如果强行退出python进程,如何安全地退出套接字?

时间:2017-12-16 15:43:08

标签: python sockets

我正在尝试使用套接字启动并运行一个简单的服务器,它将向任何连接的客户端发送相同的信息。我已成功设法处理线程并在KeyboardInterrupt的情况下停止它们,但如果脚本提前结束(例如python进程关闭或强制运行),我无法弄清楚如何关闭套接字再次写剧本。)

一个非常基本的例子是:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket_process.bind(('localhost', 60000))
socket_process.listen(5)
conn, addr = socket_process.accept()

如果你运行它(至少在Windows上),然后点击F5再次运行它,你得到error: [Errno 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted.。它最终会在半分钟之后关闭,但如果产生它的脚本不再存在,我希望它立即关闭。

即使设置了超时,也不会导致错误随时消失。

对于记录,atexit不会捕获这些类型的退出。我认为类似于多处理守护进程选项的东西如果存在就可以工作。

0 个答案:

没有答案