Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Twisted HTTP代理通道在LostConnection上设置为None,但LostConnection没有';我还没接到电话_Python_Twisted_Twisted.web - Fatal编程技术网

Python Twisted HTTP代理通道在LostConnection上设置为None,但LostConnection没有';我还没接到电话

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

好的,我已经编写了一个代理来接收http GET请求并将它们转换为http POST请求(因为许多python媒体播放器只支持GET)。因此,我知道我正在缓存这些结果,这样我只下载一次url,我将大量代码从超类移动到子类,并对其进行了更改,以便我可以将相同的内容发送到多个服务器连接(例如,如果建立了服务器连接,我只会将其附加到下载实例(如果可用)

无论如何,除了最后一部分,它基本上是有效的,因为某种原因,在我调用loseConnection之前,http通道被设置为None(这没有任何错误,如internet退出等),这会导致一个错误,即None对象没有我调用loseConnection的属性传输

这是密码

    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