[Twisted-Python] sending large files from web2 http server

Markus Wanner markus at bluegap.ch
Thu Mar 5 10:20:27 EST 2009


Hi,

I'm trying to stream longish data via web2, but experience sudden stalls
in data transfer, followed by a connection abort after a certain
timeout. I can't completely reproduce the issue, yet, but figured that
the size of the blocks I'm returning via the stream's read method
affects the failure rate (an stream.IByteStream implementation).

I've tried with chunk sizes between 1 MiB down to 256 bytes. At that
rate, I suddenly get the following unhandled errors, which don't seem to
have to do much with my code.

2009/03/05 16:02 CET [-] Unhandled error in Deferred:
2009/03/05 16:02 CET [-] Traceback (most recent call last):
	  File "/usr/lib/python2.4/site-packages/twisted/internet/defer.py",
line 267, in unpause
	    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 271, in _continue
	    self.unpause()
	  File "/usr/lib/python2.4/site-packages/twisted/internet/defer.py",
line 267, in unpause
	    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/lib/python2.4/site-packages/twisted/internet/defer.py",
line 271, in _continue
	    self.unpause()
	  File "/usr/lib/python2.4/site-packages/twisted/internet/defer.py",
line 267, in unpause
	    self._runCallbacks()
	  File "/usr/lib/python2.4/site-packages/twisted/internet/defer.py",
line 321, in _runCallbacks
	    self.result = failure.Failure()
	  File "/usr/lib/python2.4/site-packages/twisted/python/failure.py",
line 205, in __init__
	    parentCs = reflect.allYourBase(self.type)
	  File "/usr/lib/python2.4/site-packages/twisted/python/reflect.py",
line 480, in allYourBase
	    accumulateBases(classObj, l, baseClass)
	exceptions.RuntimeError: maximum recursion depth exceeded


Are there any known problems with web2 and large files (not that 64 MiB
is *that* large...). Any hint regarding the above error? Is the same to
be expected with a chunk size of 8 KiB and a file of 2 GiB size (as that
would result in the same amount of chunks)?

Any hints would be greatly appreciated.

Kind Regards

Markus Wanner




More information about the Twisted-Python mailing list