blob: 3bf87d30d996eab97b264974b73ddcc550d32f3a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import asyncio
from blinker.base import Signal
try:
schedule = asyncio.ensure_future
except AttributeError:
schedule = asyncio.async
@asyncio.coroutine
def _wrap_plain_value(value):
"""Pass through a coroutine *value* or wrap a plain value."""
if asyncio.iscoroutine(value):
value = yield from value
return value
def send_async(scheduler=schedule):
def adapter(receiver, sender, kwargs):
result = receiver(sender, **kwargs)
return scheduler(_wrap_plain_value(result))
return adapter
|