def remove_notsocks (map):
global _select_errors, _logger
# on Windows we can get WSAENOTSOCK if the client
# rapidly connect and disconnects
killed = 0
for fd, obj in list(map.items()):
r = []; w = []; e = []
is_r = obj.readable()
is_w = obj.writable()
if is_r:
r = [fd]
# accepting sockets should not be writable
if is_w and not obj.accepting:
w = [fd]
if is_r or is_w:
e = [fd]
try:
select.select (r, w, e, 0)
except:
#_logger and _logger.trace ()
killed += 1
_select_errors += 1
try:
try: obj.handle_expt ()
except: obj.handle_error ()
except:
_logger and _logger.trace ()
try: del map [fd]
except KeyError: pass
return killed
评论列表
文章目录