[Twisted-web] cancelling agent.request
exarkun at twistedmatrix.com
exarkun at twistedmatrix.com
Sat Jan 14 10:01:43 EST 2012
On 10:18 am, johnaherne at rocs.co.uk wrote:
>I have a situation where a service I am using will occasionally not
>respond
>for considerable periods - hours not minutes.
>
>I am using cooperate and yield to loop round a series of requests I
>want to
>make
>
>The actual function to send the request returns a deferred to the
>yield. I
>add the callbacks onto this and set a calllater to fire in 30 seconds.
>
>If that fires I can then cancel the deferred. But I think I ought to be
>cancelling the request as well else I assume I will be leaking request
>objects that might not get dealt with.
>
>However, I can't see where I might cancel the request. Or should I be
>dropping the connection associated with the request and if so where
>would I
>be doing that.
>
>Have I got that right?
The cancel method of the Deferred returned by Agent.request is probably
the right API to use to do the cleanup you're interested in. However,
cancelation is not specifically implemented for the Agent.request
Deferred yet. Though it may sound like one, this is not a contradiction
due to the way Deferred cancelation works (ideally we would have
documentation about Deferred cancelation that would explain why this is,
but we don't).
See http://twistedmatrix.com/trac/ticket/4330 for progress on this issue
or to contribute.
Jean-Paul
More information about the Twisted-web
mailing list