Twisted ПАиПП — Классические примеры

Deferred \ Callbacks \ Errbacks

Не блокирующий запрос web страницы:

from twisted.web.client import getPage
from twisted.internet import reactor

def lowerCaseContents(contents):
    return contents.lower()

def printContents(contents):
    print contents
    reactor.stop()

deferred = getPage('http://twistedmatrix.com/')


# Добавляем два callback'а для запроса web страницы
# первый преобразует весь полученный текст к нижнему регистру
# второй распечатает ответ запроса в стандартный поток вывода
deferred.addCallback(lowerCaseContents)
deferred.addCallback(printContents)

reactor.run()

Добавляем обработку ошибок errback в общий запрос:

from twisted.web.client import getPage
from twisted.internet import reactor

def errorHandler(error):
    print "An error has occurred: <%s>" % str(error)
    reactor.stop()

def printContents(contents):
    print contents
    reactor.stop()

# Запрашиваем не существующую страницу
deferred = getPage('http://twistedmatrix.com/does-not-exist')

# обработка запроса без ошибок
deferred.addCallback(printContents)

# обработка ошибки
deferred.addErrback(errorHandler)

reactor.run()

Пример сервера для сбора сообщений(Logger):

#!/usr/bin/python
from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor

log = file("log.txt","w")

class DummyLogger(Protocol):
    def dataReceived(self, data):
    log.write(data)
    log.flush()
    self.transport.write(data)

# Говорим фабрике сервиса использовать протокол DummyLogger
dummy_factory = Factory()
dummy_factory.protocol = DummyLogger

# 8007 порт сервиса сбора логов.
# Сам сервис использует наш dummy_factory для порождения
# протокола-обработчика данных каждой сессии соединения
reactor.listenTCP(8007, dummy_factory)
reactor.run()

Добавить пост в:   Yandex.ru Google Yahoo Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Memori.ru Myscoop.ru 100zakladok.ru Rucity.com Moemesto.ru News2.ru Delicious Reddit Slashdot Digg Technorati
Комментировать

Пингбэки

ChmOD &raquo; HL++ (2009): Twisted Framework @blog.chm.od.ua 29.01.2010 11:39
Александр Бурцев о Twisted
HL++ (2009): Twisted Framework | Ð&lsquo;лог Ð?ндÑ&euro;еÑ? СмиÑ&euro;нова @www.smira.ru 13.10.2009 22:43
Ð?Ð»ÐµÐºÑ Ð°Ð½Ð´Ñ€ Бурцев о Twisted

Поля не обязательны для заполнения, по умолчанию комментарий от Anonymous

captcha
Оставить комментарий используя OpenID

Пожалуйста выберите сервер с вашим аккаунтом:

Комментарии

factory.protocol = DummyLogger -> dummy_factory.protocol = DummyLogger

Спасибо, очепятка =)