self.socket.settimeout(nn)
мне кажется, это не сработает.
Однако у asyncore.loop () есть параметр с именем count.Вот псевдокод, что делает asyncore.loop ():
for i in range(count):
...
select(... , timeout)
...
Поэтому, если вы хотите 5 секунд, вам нужно будет сделать:
asyncore.loop(timeout=1, count=5)
Но не рекомендуется работать вэто точный путь.Обратите внимание, что если есть «события», вы можете иметь более 5 «отсчетов».Я использую следующий код:
start = int(time.time())
while True:
asyncore.loop(timeout=1, count=5)
print "LOOP : %d enqueued, waiting to finish" % len(asyncore.socket_map)
if len(asyncore.socket_map) == 0 :
break
if int(time.time()) - start > timeout :
print "LOOP : Timeout"
break