Форум сайта python.su
Добрый день.
Данный прокси сервер выдает TimeoutError при загрузке некоторых страниц. Страница грузится почти сразу и почти полностью, вместе с картинками и CSS. Не отображаются в браузере только несколько картинок со страницы. Затем браузер показывает что все еще грузит страницу(~10 сек.), но эти картинки не отображаются. Затем сервер выдает ошибку, раз 8.
Вот ошибка
http://pastebin.com/dsTvvWuk
Код twisted, почти как в учебнике(twisted network programming), начинает обрабатывать запрос с process, достает url из запроста и загружает страницу через agent.
from twisted.internet import protocol, reactor from twisted.web import http from twisted.web.client import Agent from twisted.internet.defer import Deferred import sys class MyRequest(http.Request): def process(self): agent = Agent(reactor) d = agent.request('GET', self.uri) #no headers загрузка страницы через agent d.addCallbacks(self.GetRespnse, self.Errorr) d.addCallback(self.SendResp) def GetRespnse(self, resp): up = Deferred() self.hedrs = resp.headers #сохраняю заголовки ответа resp.deliverBody(GetFullResp(up)) #получаю весь ответ print 'full resp triggered' return up def Errorr(self, fail): print >>sys.stderr, fail def SendResp(self, data): self.setResponseCode(200) i = self.hedrs.getAllRawHeaders() for u, v in i: self.setHeader(u, ''.join(v)) # вставка заголовков self.write('') self.write(data) self.finish() class GetFullResp(protocol.Protocol): def __init__(self, up): self.up = up self.data = '' def dataReceived(self, data): self.data += data def connectionLost(self, reason): print 'passing to callback' self.up.callback(self.data) #отправка ответа браузеру class MyHttp(http.HTTPChannel): requestFactory = MyRequest class MyHttpFactory(protocol.Factory): def buildProtocol(self, ptfactory): return MyHttp() reactor.listenTCP(8000, MyHttpFactory()) reactor.run()
Отредактировано asdf (Дек. 8, 2013 18:20:54)
Офлайн
Офлайн