class SocketPool(object):
pool = []
def run(self):
print "begin"
while 1:
for s in self.pool:
iwtd, owtd, ewtd = select.select( [s], [], [s], 0.1 )
print iwtd, owtd, ewtd
if iwtd:
data = s.recv(1024)
s.send(data.upper())
print data
если один из клиентских сокетов отвалился, то я ожидал, что в ewtd должен стать непустым.
но непустым становится iwtd. т.е. я не различаю события, произошедшие в сокете: “данные пришли” от “отвалился клиент”.
соответственно, возникает ошибка. в-принципе, я могу отловить ошибку через try, но как-то это некрасиво.