在我的代码中,我正在打开一个插座,该插座我注册到epolleSelector。然后,选择器/unregister()的文档说:
在关闭之前,应未注册文件对象。
我如何保证这样的代码:
with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as a_socket:
a_socket.bind(socket_addr)
a_socket.listen(1)
epoll = select.epoll()
epoll.register(a_socket, select.EPOLLIN, select.EPOLLERR, select.EPOLLHUP)
do_stuff()
epoll.unregister(a_socket)
如果do_stuff提出了一个例外,我如何确保未注册发生在插座关闭之前?如果我在关闭插座之前不取消注册会发生什么样的问题?
不可能用try/除外?
将do_stuff()包裹try:
do_stuff()
except Exception as e:
print("There was an error!")
epoll.unregister(a_socket)