On 04/22/2010 07:06 AM, Andrey Fedorov wrote: > Thanks! The main reason for the question, though, is just curiosity from > playing with and learning the Twisted API, not necessarily getting the > example working :) > > A more direct question would have been - is there a Twisted reactor > which provides a blocking call instead of a callback? Is there an > accepted "best" way of wrapping an non-blocking async API with callbacks > into a blocking synchronous one?
If I understand what you're asking you want to call Twisted code in the following style: def function(): # this code blocks result = some_twisted_thing() value = process(result) final = morecode(value) Rather than: def function(): def = some_twisted_thing() def.addCallback(process) def.addCallback(morecode) If that's the case, then the answer is "sort of" but I think you might have misunderstood Twisted a bit. The entire point is to have non-blocking APIs, not to want a blocking API. You can't "really" block, because that stops the reactor from running, and thus any networking events being handled. You can emulate it in Python 2.5 with generators & a special decorator: from twisted.internet import deferred @deferred.inlineCallbacks def function(): result = yield some_twisted_thing() value = yield process(result) final = yield morecode(value) I might have misunderstood what you're asking though, in which case I apologise, and can you be more specific? _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python