[Twisted-Python] Deferreds

Andrew Bennetts andrew-twisted at puzzling.org
Thu Apr 4 19:06:46 EST 2002


I've been thinking about Deferreds lately, and I think they are lacking
something that I would find very handy.

Chaining success and error callbacks is very handy, but occasionally I find
myself having to do:

    deferred = obj.runAsynchronousThing(...)
    deferred.addCallbacks(success, error)
    # Ensure that we close the objectoid
    deferred.addCallbacks(lambda x, obj=obj: obj.close(),
                          lambda x, obj=obj: obj.close())
    
It'd be nice to have a deferred equivalent of "finally", so that you could
simply do this instead:

    deferred = obj.runAsynchronousThing(...)
    deferred.addCallbacks(success, error)
    # Ensure that we close the objectoid
    deferred.finally(obj.close)

You could of course register multiple final callbacks, all of which take no
arguments.

Would other people find this useful?

On a related note, I recall an IRC discussion where a few of us thought that
Deferred.callback(..) should be Deferred.finish(..) and similarly
.errback(..) should be .fail(..).

-Andrew.





More information about the Twisted-Python mailing list