= asyncore - Асинхронный обработчик сокетов = [[http://docs.python.org/library/asyncore.html#module-asyncore|asyncore]] - модуль предназначенный для работы с неблокирующими сокетами. Неблокирующие сокеты (nonblocking sockets) - это сокеты на время выполнения операции с которыми клиентская программа не блокируется, те например не ожидает завершения операции получения данных, а идет дальше. Вместо того чтобы вызывать обработку данных сразу после прослушивания сокета, вы делаете коллбэк который будет вызван когда сокет будет готов передать или принять данные. Пример простой отправки стандартного GET запроса на получение страницы. {{{#!python import asyncore, socket class http_client(asyncore.dispatcher): def __init__(self, host, path): asyncore.dispatcher.__init__(self) self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.connect( (host, 80) ) self.buffer = 'GET %s HTTP/1.0\r\n\r\n' % path self.host = host def handle_connect(self): pass def handle_close(self): self.close() #автоматически вызывается когда в сокет приходят данные #тут мы выведем хост с откуда они идут, и сделаем стандартное чтение с сокета def handle_read(self): print self.host self.recv(8192) #print self.recv(8192) #этот метод сигнал о том что сокет готов записывать def writable(self): return (len(self.buffer) > 0) def handle_write(self): sent = self.send(self.buffer) self.buffer = self.buffer[sent:] c = http_client('www.mail.ru', '/') c = http_client('www.python.org', '/') #запускаем цикл опроса сокетов asyncore.loop() }}} Рузультат: {{{ www.mail.ru www.mail.ru www.mail.ru www.mail.ru www.mail.ru www.python.org www.python.org www.mail.ru www.mail.ru www.mail.ru }}}