[Python-Dev] Active Objects in Python
Christopher Armstrong
radeex at gmail.com
Wed Sep 28 03:41:27 CEST 2005
On 9/28/05, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
> Nick Coghlan wrote:
>
> > PEP 342's yield expressions can probably be used to help address that problem,
> > though:
> >
> > class SomeAO(ActiveObject):
> > def processSomeMessage(self):
> > msg = yield
> > # Do something with the message
> > next_msg = yield makeSomeBlockingCall(self)
> > # Do something with the next message
>
> I don't see how that helps, since makeSomeBlockingCall()
> is evaluated (and therefore blocks) *before* the yield
> happens.
Sounds like makeSomeBlockingCall is just misnamed (probably depending
who you ask).
I wrote a small library recently that wraps Twisted's Deferreds and
asynchronous Failure objects such that you can do stuff like
try:
x = yield remoteObject.getSomething()
except Foo:
print "Oh no!"
This is just a 2.5-ification of defgen, which is at
twisted.internet.defer.{deferredGenerator,waitForDeferred}. So anyway,
if your actor messages always return Deferreds, then this works quite
nicely.
--
Twisted | Christopher Armstrong: International Man of Twistery
Radix | -- http://radix.twistedmatrix.com
| Release Manager, Twisted Project
\\\V/// | -- http://twistedmatrix.com
|o O| |
w----v----w-+
More information about the Python-Dev
mailing list