Python Twisted HTTP代理通道在LostConnection上设置为None,但LostConnection没有';我还没接到电话
好的,我已经编写了一个代理来接收http GET请求并将它们转换为http POST请求(因为许多python媒体播放器只支持GET)。因此,我知道我正在缓存这些结果,这样我只下载一次url,我将大量代码从超类移动到子类,并对其进行了更改,以便我可以将相同的内容发送到多个服务器连接(例如,如果建立了服务器连接,我只会将其附加到下载实例(如果可用) 无论如何,除了最后一部分,它基本上是有效的,因为某种原因,在我调用loseConnection之前,http通道被设置为None(这没有任何错误,如internet退出等),这会导致一个错误,即None对象没有我调用loseConnection的属性传输 这是密码Python Twisted HTTP代理通道在LostConnection上设置为None,但LostConnection没有';我还没接到电话,python,twisted,twisted.web,Python,Twisted,Twisted.web,好的,我已经编写了一个代理来接收http GET请求并将它们转换为http POST请求(因为许多python媒体播放器只支持GET)。因此,我知道我正在缓存这些结果,这样我只下载一次url,我将大量代码从超类移动到子类,并对其进行了更改,以便我可以将相同的内容发送到多个服务器连接(例如,如果建立了服务器连接,我只会将其附加到下载实例(如果可用) 无论如何,除了最后一部分,它基本上是有效的,因为某种原因,在我调用loseConnection之前,http通道被设置为None(这没有任何错误,如i
self.connectionDone = True
print self.producers
for p in self.producers:
print p
print p.channel
print dir(p)
p.channel.transport.loseConnection()
self.transport.loseConnection()
并且self.channel的回溯设置为none(回溯模块在每个setattr调用上的打印堆栈)
注意:看最后几行,我认为这就是问题所在
File "Sharky.py", line 581, in <module>
reactor.run()
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\internet\wxreactor.py", line 145, in run
self.wxapp.MainLoop()
File "C:\Program Files\Python 2.6.2\lib\site-packages\wx-2.8-msw-unicode\wx\_core.py", line 8007, in MainLoop
wx.PyApp.MainLoop(self)
File "C:\Program Files\Python 2.6.2\lib\site-packages\wx-2.8-msw-unicode\wx\_core.py", line 7303, in MainLoop
return _core_.PyApp_MainLoop(*args, **kwargs)
File "C:\Program Files\Python 2.6.2\lib\site-packages\wx-2.8-msw-unicode\wx\_core.py", line 14640, in <lambda>
lambda event: event.callable(*event.args, **event.kw) )
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\internet\_threadedselect.py", line 243, in _interleave
getattr(self, '_process_' + msg)(*args)
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\internet\_threadedselect.py", line 209, in _process_Notify
_logrun(selectable, _drdw, selectable, method, dct)
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\python\log.py", line 84, in callWithLogger
return callWithContext({"system": lp}, func, *args, **kw)
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\python\log.py", line 69, in callWithContext
return context.call({ILogContext: newCtx}, func, *args, **kw)
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\python\context.py", line 59, in callWithContext
return self.currentContext().callWithContext(ctx, func, *args, **kw)
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\python\context.py", line 37, in callWithContext
return func(*args,**kw)
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\internet\_threadedselect.py", line 303, in _doReadOrWrite
self._disconnectSelectable(selectable, why, method == "doRead")
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\internet\posixbase.py", line 253, in _disconnectSelectable
selectable.connectionLost(f)
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\internet\tcp.py", line 519, in connectionLost
protocol.connectionLost(reason)
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\web\http.py", line 1725, in connectionLost
request.connectionLost(reason)
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\web\http.py", line 1287, in connectionLost
self.channel = None
File "C:\Documents and Settings\Admin\My Documents\Mercurial\sharky\ProxyServer.py", line 172, in __setattr__
traceback.print_stack()
文件“Sharky.py”,第581行,在
反应堆运行()
文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\internet\wxreactor.py”,第145行,正在运行
self.wxapp.MainLoop()
文件“C:\Program Files\Python 2.6.2\lib\site packages\wx-2.8-msw-unicode\wx\\ u core.py”,行8007,在MainLoop中
wx.PyApp.MainLoop(自)
文件“C:\Program Files\Python 2.6.2\lib\site packages\wx-2.8-msw-unicode\wx\\ u core.py”,第7303行,在MainLoop中
返回_core.PyApp_MainLoop(*args,**kwargs)
文件“C:\Program Files\Python 2.6.2\lib\site packages\wx-2.8-msw-unicode\wx\\ u core.py”,第14640行,在
lambda事件:event.callable(*event.args,**event.kw))
文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\internet\\u threadedselect.py”,第243行,交叉插入
getattr(自,'.'处理'+msg)(*args)
文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\internet\\u threadedselect.py”,第209行,在进程通知中
_日志运行(可选,_drdw,可选,方法,dct)
callWithLogger中的文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\Python\log.py”,第84行
返回callWithContext({“system”:lp},func,*args,**kw)
callWithContext中的文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\Python\log.py”,第69行
返回context.call({ILogContext:newCtx},func,*args,**kw)
callWithContext中的文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\Python\context.py”,第59行
返回self.currentContext().callWithContext(ctx,func,*args,**kw)
callWithContext中的文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\Python\context.py”,第37行
返回函数(*参数,**kw)
文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\internet\\u threadedselect.py”,第303行,在_doReadOrWrite中
self.\u disconnectselective(可选,为什么,方法==“doRead”)
文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\internet\posixbase.py”,第253行,在
可选。无连接(f)
文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\internet\tcp.py”,第519行,位于connectionLost中
协议.连接失败(原因)
文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\web\http.py”,第1725行,在connectionLost中
请求。连接失败(原因)
文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\web\http.py”,第1287行,在connectionLost中
self.channel=None
文件“C:\Documents and Settings\Admin\My Documents\Mercurial\sharky\ProxyServer.py”,第172行,位于__
traceback.print_stack()
这是我得到的无属性异常
Traceback (most recent call last):
File "C:\Program Files\Python 2.6.2\lib\site-packages\wx-2.8-msw-unicode\wx\_core.py", line 7303, in MainLoop
return _core_.PyApp_MainLoop(*args, **kwargs)
File "C:\Program Files\Python 2.6.2\lib\site-packages\wx-2.8-msw-unicode\wx\_core.py", line 14640, in <lambda>
lambda event: event.callable(*event.args, **event.kw) )
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\internet\_threadedselect.py", line 243, in _interleave
getattr(self, '_process_' + msg)(*args)
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\internet\_threadedselect.py", line 209, in _process_Notify
_logrun(selectable, _drdw, selectable, method, dct)
--- <exception caught here> ---
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\python\log.py", line 84, in callWithLogger
return callWithContext({"system": lp}, func, *args, **kw)
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\python\log.py", line 69, in callWithContext
return context.call({ILogContext: newCtx}, func, *args, **kw)
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\python\context.py", line 59, in callWithContext
return self.currentContext().callWithContext(ctx, func, *args, **kw)
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\python\context.py", line 37, in callWithContext
return func(*args,**kw)
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\internet\_threadedselect.py", line 303, in _doReadOrWrite
self._disconnectSelectable(selectable, why, method == "doRead")
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\internet\posixbase.py", line 253, in _disconnectSelectable
selectable.connectionLost(f)
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\internet\tcp.py", line 677, in connectionLost
Connection.connectionLost(self, reason)
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\internet\tcp.py", line 519, in connectionLost
protocol.connectionLost(reason)
File "C:\Program Files\Python 2.6.2\lib\site-packages\twisted\web\http.py", line 489, in connectionLost
self.handleResponseEnd()
File "C:\Documents and Settings\Admin\My Documents\Mercurial\sharky\ProxyServer.py", line 103, in handleResponseEnd
p.channel.transport.loseConnection()
exceptions.AttributeError: 'NoneType' object has no attribute 'transport'
回溯(最近一次呼叫最后一次):
文件“C:\Program Files\Python 2.6.2\lib\site packages\wx-2.8-msw-unicode\wx\\ u core.py”,第7303行,在MainLoop中
返回_core.PyApp_MainLoop(*args,**kwargs)
文件“C:\Program Files\Python 2.6.2\lib\site packages\wx-2.8-msw-unicode\wx\\ u core.py”,第14640行,在
lambda事件:event.callable(*event.args,**event.kw))
文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\internet\\u threadedselect.py”,第243行,交叉插入
getattr(自,'.'处理'+msg)(*args)
文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\internet\\u threadedselect.py”,第209行,在进程通知中
_日志运行(可选,_drdw,可选,方法,dct)
--- ---
callWithLogger中的文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\Python\log.py”,第84行
返回callWithContext({“system”:lp},func,*args,**kw)
callWithContext中的文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\Python\log.py”,第69行
返回context.call({ILogContext:newCtx},func,*args,**kw)
callWithContext中的文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\Python\context.py”,第59行
返回self.currentContext().callWithContext(ctx,func,*args,**kw)
callWithContext中的文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\Python\context.py”,第37行
返回函数(*参数,**kw)
文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\internet\\u threadedselect.py”,第303行,在_doReadOrWrite中
self.\u disconnectselective(可选,为什么,方法==“doRead”)
文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\internet\posixbase.py”,第253行,在
可选。无连接(f)
文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\internet\tcp.py”,第677行,位于connectionLost中
Connection.connectionLost(自我、原因)
文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\internet\tcp.py”,第519行,位于connectionLost中
协议.连接失败(原因)
文件“C:\Program Files\Python 2.6.2\lib\site packages\twisted\web\http.py”,第489行,位于connectionLost中
self.handleresponseed()
文件“C:\Documents and Settings\Ad