summaryrefslogtreecommitdiff
path: root/docs/source/index.rst
diff options
context:
space:
mode:
authorYouri Ackx <youri@sugoi.be>2021-01-29 14:36:38 +0100
committerGitHub <noreply@github.com>2021-01-29 14:36:38 +0100
commitb5e9f0629200d2b2f62e13e595b802948bb4fefb (patch)
tree4741857fe53c5500487894c2e3c9ff9c4ee2ce3b /docs/source/index.rst
parent904d8d3803e84257c08526e9047474215aa1c976 (diff)
parentc7b83a18a54efa9e08a9446e2d16956ee5fe353b (diff)
downloadblinker-master.tar.gz
Merge pull request #18 from jek/feature/send-asyncmaster
Adds Signal.send_async for asyncio Author: @jek
Diffstat (limited to 'docs/source/index.rst')
-rw-r--r--docs/source/index.rst30
1 files changed, 30 insertions, 0 deletions
diff --git a/docs/source/index.rst b/docs/source/index.rst
index bdb40ef..521e7c5 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -14,6 +14,7 @@ The core of Blinker is quite small but provides powerful features:
- sending arbitrary data payloads
- collecting return values from signal receivers
- thread safety
+ - coroutines as signal receivers
Blinker was written by Jason Kirtand and is provided under the MIT
License. The library supports Python 2.7 and Python 3.5 or later;
@@ -94,6 +95,35 @@ notifications being sent, and these no-op sends are optimized to be as
inexpensive as possible.
+Async support
+-------------
+
+Send a signal asynchronously to coroutine receivers.
+
+ >>> async def receiver_a(sender):
+ ... return 'value a'
+ ...
+ >>> async def receiver_b(sender):
+ ... return 'value b'
+ ...
+ >>> ready = signal('ready')
+ >>> ready.connect(receiver_a)
+ >>> ready.connect(receiver_b)
+ ...
+ >>> async def collect():
+ ... return ready.send_async('sender')
+ ...
+ >>> loop = asyncio.get_event_loop()
+ >>> results = loop.run_until_complete(collect())
+ >>> len(results)
+ 2
+ >>> [v.result() for r, v in results][0]
+ value a
+
+Dispatching to an arbitrary mix of connected
+coroutines and receiver functions is supported.
+
+
Subscribing to Specific Senders
-------------------------------