我应该如何关闭并取消注册到选择器的插座



在我的代码中,我正在打开一个插座,该插座我注册到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)

最新更新