[Twisted-Python] TaskStopped error, unsure of the cause and solution

exarkun at twistedmatrix.com exarkun at twistedmatrix.com
Fri Dec 21 13:08:22 EST 2012


On 04:12 pm, poalman at gmail.com wrote:
>Hey,
>
>I'm getting the following error in my logs (lots and lots), but only
>after the server has been running for some time, I'm not sure what the
>cause is or what I can do to remedy it.

This seems like a bug in `Agent`, perhaps related to `stopProducing` 
being called more than once.  It would be great if you could produce a 
minimal example to include with a bug report in the issue tracker.  An 
example that reproduces the problem will also make it easier to see 
where the bug is in your code, if it happens to be there rather than in 
Twisted.

Jean-Paul
>This is what I see in the logs:
>
>2012-12-20 17:07:17+0000 [HTTP11ClientProtocol,client] Unhandled Error
>        Traceback (most recent call last):
>        Failure: twisted.web._newclient.RequestTransmissionFailed:
>[<twisted.python.failure.Failure <class
>'twisted.internet.error.ConnectionDone'>>]
>
>2012-12-20 17:07:17+0000 [HTTP11ClientProtocol,client] Unexpected
>exception from twisted.web.client.FileBodyProducer.stopProducing
>        Traceback (most recent call last):
>          File "/usr/local/lib/python2.7/site- 
>packages/Twisted-12.2.0-py2.7-linux- 
>x86_64.egg/twisted/internet/endpoints.py",
>line 99, in connectionLost
>            return self._wrappedProtocol.connectionLost(reason)
>          File "/usr/local/lib/python2.7/site- 
>packages/Twisted-12.2.0-py2.7-linux- 
>x86_64.egg/twisted/web/_newclient.py",
>line 859, in dispatcher
>            return func(*args, **kwargs)
>          File "/usr/local/lib/python2.7/site- 
>packages/Twisted-12.2.0-py2.7-linux- 
>x86_64.egg/twisted/web/_newclient.py",
>line 1458, in _connectionLost_TRANSMITTING
>            self._currentRequest.stopWriting()
>          File "/usr/local/lib/python2.7/site- 
>packages/Twisted-12.2.0-py2.7-linux- 
>x86_64.egg/twisted/web/_newclient.py",
>line 760, in stopWriting
>            _callAppFunction(self.bodyProducer.stopProducing)
>        --- <exception caught here> ---
>          File "/usr/local/lib/python2.7/site- 
>packages/Twisted-12.2.0-py2.7-linux- 
>x86_64.egg/twisted/web/_newclient.py",
>line 191, in _callAppFunction
>            function()
>          File "/usr/local/lib/python2.7/site- 
>packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/web/client.py",
>line 760, in stopProducing
>            self._task.stop()
>          File "/usr/local/lib/python2.7/site- 
>packages/Twisted-12.2.0-py2.7-linux- 
>x86_64.egg/twisted/internet/task.py",
>line 459, in stop
>            self._checkFinish()
>          File "/usr/local/lib/python2.7/site- 
>packages/Twisted-12.2.0-py2.7-linux- 
>x86_64.egg/twisted/internet/task.py",
>line 469, in _checkFinish
>            raise self._completionState
>        twisted.internet.task.TaskStopped:
>
>Just loads of those, they always seem to come through in pairs (the
>first twisted.internet.error.ConnectionDone, and then the
>twisted.internet.task.TaskStopped as above)
>
>I'm just doing PUT requests with twisted.web.client.Agent and using a
>twisted.web.client.FileBodyProducer to provide the content.
>
>I'm doing the PUT while I still have the request from a render_GET, so
>I thought maybe it's caused if the user disconnects while I'm doing
>the PUT? The idea is I redirect them to the file I PUT with
>request.redirect, which seems to work fine (until I get this error and
>it doesn't)
>
>The reason I do a PUT and redirect, instead of just writing back to
>the request is that I check if the file is in a cache first, I then
>only PUT if it's not there- then redirect afterwards.
>
>Any clues or ideas of what is happening would be hugely helpful
>
>thanks!!
>
>Paul
>
>_______________________________________________
>Twisted-Python mailing list
>Twisted-Python at twistedmatrix.com
>http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python



More information about the Twisted-Python mailing list