[Twisted-Python] waitForDeferred Question
Mike Pelletier
mike at mkp.ca
Sat Mar 11 01:24:59 EST 2006
At Fri, 10 Mar 2006 22:13:05 -0800,
Brian Granger wrote:
>
> In our system, we can easily imagine a user making dozens of
> interactive calls like this over short periods of time. When all of
> these results are available essentially immediately, it iseems like
> overkill to have a more complicated UI. But, it is very appropriate
> to use Twisted underneath, because it really is an asynchronous system
> and all the error detection and handling is best dealt with that
> asynchronously. But as long as there are no errors, I woult like the
> Twisted machinery to just pass along the result directly.
It sounds like you need to teach your interpreter to deal with
deferreds. I'd do something very vaugely like this:
def eval_loop(result):
print result
expression = raw_input(">>> ")
d = maybeDeferred(eval(expression))
d.addCallback(lambda r:reactor.callLater(eval_loop, r))
reactor.callWhenRunning(eval_loop, "Welcome to StupidPython")
reactor.run()
Obviously this is not the correct way to implement an interpreter and
I don't know whether I've remembered all the names and signatures
correctly, but hopefully it conveys the idea.
Mike.
More information about the Twisted-Python
mailing list