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

2024-04-25 06:02:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让一个简单的服务器启动并运行套接字,在那里它将向任何连接的客户端发送相同的信息。在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不会捕捉到这些类型的退出。我认为类似于多处理守护进程选项的东西如果存在的话也可以工作。在


Tags: import服务器脚本信息客户端进程address情况