gevent¶
Deprecated since version 2.0.3.
Warning
gevent support is deprecated and will be removed in Pykka 3.0.
Installation¶
To run Pykka on top of gevent, you first need to install the gevent package from PyPI:
pip install gevent
Code changes¶
Next, all actors must subclass pykka.gevent.GeventActor
instead of
pykka.ThreadingActor
.
If you create any futures yourself, you must replace
pykka.ThreadingFuture
with pykka.gevent.GeventFuture
.
With those changes in place, Pykka should run on top of gevent.
API¶
-
class
pykka.gevent.
GeventFuture
(async_result=None)[source]¶ GeventFuture
implementspykka.Future
for use withGeventActor
.It encapsulates a
gevent.event.AsyncResult
object which may be used directly, though it will couple your code with gevent.-
async_result
= None¶ The encapsulated
gevent.event.AsyncResult
-
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
isNone
, as default, the method will block until it gets a reply, potentially forever. Iftimeout
is an integer or float, the method will wait for a reply fortimeout
seconds, and then raisepykka.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 timeoutRaise: pykka.Timeout
if timeout is reachedRaise: 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 object or None
) – the encapsulated value or nothingRaise: 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 bysys.exc_info()
. If you don’t passexc_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.gevent.
GeventActor
(*args, **kwargs)[source]¶ GeventActor
implementspykka.Actor
using the gevent library. gevent is a coroutine-based Python networking library that uses greenlet to provide a high-level synchronous API on top of libevent event loop.This is a very fast implementation.