eventlet

Installation

To run Pykka on top of eventlet, you first need to install the eventlet package from PyPI:

pip install eventlet

Code changes

Next, all actors must subclass pykka.eventlet.EventletActor instead of pykka.ThreadingActor.

If you create any futures yourself, you must replace pykka.ThreadingFuture with pykka.eventlet.EventletFuture.

With those changes in place, Pykka should run on top of eventlet.

API

class pykka.eventlet.EventletEvent[source]

EventletEvent adapts eventlet.event.Event to threading.Event interface.

class pykka.eventlet.EventletFuture[source]

EventletFuture implements pykka.Future for use with EventletActor.

get(timeout=None)[source]

Get the value encapsulated by the future.

If the encapsulated value is an exception, it is raised instead of returned.

If timeout is None, as default, the method will block until it gets a reply, potentially forever. If timeout is an integer or float, the method will wait for a reply for timeout seconds, and then raise pykka.Timeout.

The encapsulated value can be retrieved multiple times. The future will only block the first time the value is accessed.

Parameters:timeout (float or None) – seconds to wait before timeout
Raise:pykka.Timeout if timeout is reached
Raise:encapsulated value if it is an exception
Returns:encapsulated value if it is not an exception
set(value=None)[source]

Set the encapsulated value.

Parameters:value (any picklable object or None) – the encapsulated value or nothing
Raise:an exception if set is called multiple times
set_exception(exc_info=None)[source]

Set an exception as the encapsulated value.

You can pass an exc_info three-tuple, as returned by sys.exc_info(). If you don’t pass exc_info, sys.exc_info() will be called and the value returned by it used.

In other words, if you’re calling set_exception(), without any arguments, from an except block, the exception you’re currently handling will automatically be set on the future.

Parameters:exc_info (three-tuple of (exc_class, exc_instance, traceback)) – the encapsulated exception
class pykka.eventlet.EventletActor(*args, **kwargs)[source]

EventletActor implements pykka.Actor using the eventlet library.

This implementation uses eventlet green threads.