Hi Brian
Forgive me for butting in, but.... why :-)
Helpful butting in is more than fine..
Importing the reactor is no big deal, and if you use task.deferLater, apart from not having to write any code you also have the advantage of being able to pass it a result that the deferred will be called with.
For this reason you can also put a task.deferLater result into a callback chain to achieve an async sleep and it will duly pass the result along. E.g.:
from twisted.internet import reactor, task, defer
d = somethingReturningADeferred() d.addCallback(lambda x: task.deferLater(reactor, 5.0, defer.passthru, x))
Ahh, I see. I saw the signature of deferLater and the Clock class in task and I thought that I would have to create a Clock instance by hand. That I can simply use the reactor (which of course is already imported and running in my code) simplifies the usage of deferLater. Thanks! But, even with this, I do like the flow and readability of code that uses sleep like this: @inlineCallbacks def f(): result1 = yield somethingDeferred() yield sleep(1.0) result2 = yield anotherDeferred(result2) Rather than the way that deferLater looks: @inlineCallbacks def f(): result1 = yield somethingDeferred() result2 = yield task.deferLater(reactor, 1.0, anotherDeferred, result2) But, the difference at this point is entirely aesthetic. One question though - can someone explain the need/usage cases for task.Clock and the other things in task? Cheers, Brian
Terry
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python