После вызова asyncore.loop () элемент управления передается в цикл обработки событий.
Любой код после asyncore.loop () будет вызываться только после завершения цикла событий.
Цикл обработки событий будет реагировать на различные события и обработчики вызовов. Чтобы завершить цикл обработки событий, вы должны вызвать stop в одном из обработчиков событий, где это имеет смысл.
Например: взгляните на следующий пример.
Код от: http://www.mechanicalcat.net/richard/log/Python/A_simple_asyncore__echo_server__example
import asyncore, socket
class Client(asyncore.dispatcher_with_send):
def __init__(self, host, port, message):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.connect((host, port))
self.out_buffer = message
def handle_close(self):
self.close()
def handle_read(self):
print 'Received', self.recv(1024)
self.close()
c = Client('', 5007, 'Hello, world')
asyncore.loop()
self.close вызывается внутри одного из обработчиков событий - handle_read. В этом случае после того, как данные были получены с сервера. он отключается сам.
Ссылки: