vine.promises¶
Promise implementation.
-
class
vine.promises.
promise
(fun=None, args=None, kwargs=None, callback=None, on_error=None, weak=False, ignore_result=False)[source]¶ Promise of future evaluation.
This is a special implementation of promises in that it can be used both for “promise of a value” and lazy evaluation. The biggest upside for this is that everything in a promise can also be a promise, e.g. filters, callbacks and errbacks can all be promises.
Usage examples:
>>> p = promise() >>> p.then(promise(print, ('OK',))) # noqa >>> p.on_error = promise(print, ('ERROR',)) # noqa >>> p(20) OK, 20 >>> p.then(promise(print, ('hello',))) # noqa hello, 20 >>> p.throw(KeyError('foo')) ERROR, KeyError('foo') >>> p2 = promise() >>> p2.then(print) # noqa >>> p2.cancel() >>> p(30)
Example: .. code-block:: python
from vine import promise, wrap
class Protocol(object):
- def __init__(self):
self.buffer = []
- def receive_message(self):
- return self.read_header().then(
- self.read_body).then(
wrap(self.prepare_body))
- def read(self, size, callback=None):
callback = callback or promise() tell_eventloop_to_read(size, callback) return callback
- def read_header(self, callback=None):
return self.read(4, callback)
- def read_body(self, header, callback=None):
body_size, = unpack(‘>L’, header) return self.read(body_size, callback)
- def prepare_body(self, value):
self.buffer.append(value)
-
args
¶
-
cancelled
¶
-
failed
¶
-
fun
¶
-
ignore_result
¶
-
kwargs
¶
-
property
listeners
¶
-
on_error
¶
-
ready
¶
-
reason
¶
-
value
¶
-
weak
¶