2010-07-07 4 views
2

J'ai écrit un proxy HTTP Twisted Python et je continue d'obtenir le Traceback suivant après avoir navigué vers une page via le proxy.Aide de Twisted Web Proxy!

Traceback (most recent call last): 
    File "C:\ZBrownTechnology\Web Lock\Proxy.py", line 57, in <module> 
    reactor.run() 
    File "C:\Python26\lib\site-packages\twisted\internet\base.py", line 1165, in run 
    self.mainLoop() 
    File "C:\Python26\lib\site-packages\twisted\internet\base.py", line 1177, in mainLoop 
    self.doIteration(t) 
    File "C:\Python26\lib\site-packages\twisted\internet\selectreactor.py", line 140, in doSelect 
    _logrun(selectable, _drdw, selectable, method, dict) 
--- <exception caught here> --- 
    File "C:\Python26\lib\site-packages\twisted\python\log.py", line 84, in callWithLogger 
return callWithContext({"system": lp}, func, *args, **kw) 
    File "C:\Python26\lib\site-packages\twisted\python\log.py", line 69, in callWithContext 
    return context.call({ILogContext: newCtx}, func, *args, **kw) 
    File "C:\Python26\lib\site-packages\twisted\python\context.py", line 59, in ca 
llWithContext 
    return self.currentContext().callWithContext(ctx, func, *args, **kw) 
    File "C:\Python26\lib\site-packages\twisted\python\context.py", line 37, in callWithContext 
    return func(*args,**kw) 
    File "C:\Python26\lib\site-packages\twisted\internet\selectreactor.py", line 156, in _doReadOrWrite 
    self._disconnectSelectable(selectable, why, method=="doRead") 
    File "C:\Python26\lib\site-packages\twisted\internet\posixbase.py", line 250, 
in _disconnectSelectable 
    selectable.readConnectionLost(f) 
    File "C:\Python26\lib\site-packages\twisted\internet\tcp.py", line 508, in readConnectionLost 
    self.connectionLost(reason) 
    File "C:\Python26\lib\site-packages\twisted\internet\tcp.py", line 677, in connectionLost 
    Connection.connectionLost(self, reason) 
    File "C:\Python26\lib\site-packages\twisted\internet\tcp.py", line 519, in connectionLost 
    protocol.connectionLost(reason) 
    File "C:\Python26\lib\site-packages\twisted\web\http.py", line 489, in connectionLost 
    self.handleResponseEnd() 
    File "C:\Python26\lib\site-packages\twisted\web\proxy.py", line 88, in handleResponseEnd 
    self.father.finish() 
    File "C:\Python26\lib\site-packages\twisted\web\http.py", line 900, in finish 
    "Request.finish called on a request after its connection was lost; " 
exceptions.RuntimeError: Request.finish called on a request after its connection 
was lost; use Request.notifyFinish to keep track of this. 

Qu'est-ce que cela signifie? Comment je le répare? Est-ce un problème de module ou un problème dans mon code? Je suis sur Windows XP en utilisant Python 2.6

Répondre

3

Ceci est un known bug dans twisted.web.proxy. C'est typiquement inoffensif. Si cela vous cause des problèmes, pensez à contribuer à un correctif!

+0

Et il n'y a aucun moyen, actuellement, de le faire taire? J'ai besoin du proxy pour fonctionner dans le backgraound, mais si des erreurs sont survenues, il les affichera. Maintenant, il aussi, une fois qu'il commence à afficher cette erreur, donner une erreur de navigateur aux utilisateurs utilisant le proxy. Internet Explorer ne peut pas afficher la page internet. Est-ce une partie du bug? Connaissez-vous une meilleure façon d'écrire un proxy? –

+0

J'ai été capable de trouver un patch temporaire pour ce bug si quelqu'un était intéressé. Je viens de commenter la ligne de code dans le module qui soulève l'erreur. Ça fonctionne parfaitement maintenant! –

+0

Cela ne résout pas le bug, il en introduit un autre :). Mais s'il vous plaît continuez la discussion sur le bug que JP a lié au tracker. – Glyph