[Twisted-web] Strange crash with custom resource code
Matt Feifarek
matt.feifarek at gmail.com
Thu Dec 1 14:16:43 MST 2005
I recently moved an existing twisted http app from Twisted 1.x to 2.1,
and am having a strange traceback that I can't track down.
My code renders jpeg images on-the-fly via a spawnProcess() on the
reactor. It used to work fine, and it still seems to work (though very
very slowly).
I'm getting tons of tracebacks at the console that launched the reactor:
Unhandled error in Deferred:
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/twisted/internet/defer.py",
line 294, in _startRunCallbacks
self._runCallbacks()
File "/usr/lib/python2.4/site-packages/twisted/internet/defer.py",
line 307, in _runCallbacks
self.result = callback(self.result, *args, **kw)
File "/usr/lib/python2.4/site-packages/twisted/internet/defer.py",
line 229, in callback
self._startRunCallbacks(result)
File "/usr/lib/python2.4/site-packages/twisted/internet/defer.py",
line 294, in _startRunCallbacks
self._runCallbacks()
--- <exception caught here> ---
File "/usr/lib/python2.4/site-packages/twisted/internet/defer.py",
line 307, in _runCallbacks
self.result = callback(self.result, *args, **kw)
File "/usr/local/lib/python2.4/site-packages/Wrangler/render/image/__init__.py
", line 132, in postConvert_Success
Inline_Generic.render_present( self, args[0] )
File "/usr/local/lib/python2.4/site-packages/Wrangler/render/generic.py",
line 131, in render_present
static.FileTransfer(f, size, request)
File "/usr/lib/python2.4/site-packages/twisted/web/static.py", line
413, in __init__
request.registerProducer(self, 0)
File "/usr/lib/python2.4/site-packages/twisted/web/http.py", line
583, in registerProducer
self.transport.registerProducer(producer, streaming)
File "/usr/lib/python2.4/site-packages/twisted/internet/abstract.py",
line 273, in registerProducer
producer.resumeProducing()
File "/usr/lib/python2.4/site-packages/twisted/python/hook.py", line
153, in newfunc
return getattr(klass, ORIG(klass, name))(*args, **kw)
File "/usr/lib/python2.4/site-packages/twisted/web/static.py", line
426, in resumeProducing
self.request.finish()
File "/usr/lib/python2.4/site-packages/twisted/web/server.py", line
265, in finish
http.Request.finish(self)
File "/usr/lib/python2.4/site-packages/twisted/web/http.py", line
630, in finish
self._cleanup()
File "/usr/lib/python2.4/site-packages/twisted/web/http.py", line
437, in _cleanup
self.channel.requestDone(self)
File "/usr/lib/python2.4/site-packages/twisted/web/http.py", line
1058, in requestDone
self.requests[0].noLongerQueued()
File "/usr/lib/python2.4/site-packages/twisted/web/http.py", line
468, in noLongerQueued
self.transport.registerProducer(self.producer, self.streamingProducer)
File "/usr/lib/python2.4/site-packages/twisted/internet/abstract.py",
line 273, in registerProducer
producer.resumeProducing()
File "/usr/lib/python2.4/site-packages/twisted/python/hook.py", line
153, in newfunc
return getattr(klass, ORIG(klass, name))(*args, **kw)
File "/usr/lib/python2.4/site-packages/twisted/web/static.py", line
426, in resumeProducing
self.request.finish()
File "/usr/lib/python2.4/site-packages/twisted/web/server.py", line
265, in finish
http.Request.finish(self)
File "/usr/lib/python2.4/site-packages/twisted/web/http.py", line
630, in finish
self._cleanup()
File "/usr/lib/python2.4/site-packages/twisted/web/http.py", line
437, in _cleanup
self.channel.requestDone(self)
File "/usr/lib/python2.4/site-packages/twisted/web/http.py", line
1058, in requestDone
self.requests[0].noLongerQueued()
File "/usr/lib/python2.4/site-packages/twisted/web/http.py", line
468, in noLongerQueued
self.transport.registerProducer(self.producer, self.streamingProducer)
File "/usr/lib/python2.4/site-packages/twisted/internet/abstract.py",
line 273, in registerProducer
producer.resumeProducing()
File "/usr/lib/python2.4/site-packages/twisted/python/hook.py", line
153, in newfunc
return getattr(klass, ORIG(klass, name))(*args, **kw)
File "/usr/lib/python2.4/site-packages/twisted/web/static.py", line
426, in resumeProducing
self.request.finish()
File "/usr/lib/python2.4/site-packages/twisted/web/server.py", line
265, in finish
http.Request.finish(self)
File "/usr/lib/python2.4/site-packages/twisted/web/http.py", line
630, in finish
self._cleanup()
File "/usr/lib/python2.4/site-packages/twisted/web/http.py", line
437, in _cleanup
self.channel.requestDone(self)
File "/usr/lib/python2.4/site-packages/twisted/web/http.py", line
1058, in requestDone
self.requests[0].noLongerQueued()
File "/usr/lib/python2.4/site-packages/twisted/web/http.py", line
472, in noLongerQueued
self._cleanup()
File "/usr/lib/python2.4/site-packages/twisted/web/http.py", line
437, in _cleanup
self.channel.requestDone(self)
exceptions.AttributeError: Request instance has no attribute 'channel'
Very little of that traceback refers to any of my own code, so I don't
know how to begin digging in for what I've done wrong. My suspicion is
that it's a matter of minor api changes in the Resource class, but I
can't find any migration documentation on twistedmatrix.com.
If anyone could give me a track to start my digging, I'd appreciate it.
Thanks!
More information about the Twisted-web
mailing list