|
|
@@ -38,6 +38,10 @@ logging.basicConfig(level=logging.DEBUG) |
|
|
|
from aiohttp import web |
|
|
|
from RainEagle.parse import LogDir as RELogDir, _cmaiter |
|
|
|
|
|
|
|
# https://twitter.com/encthenet/status/1220412987732787200?s=20 |
|
|
|
aiter = lambda x: x.__aiter__() |
|
|
|
anext = lambda x: x.__anext__() |
|
|
|
|
|
|
|
class StickyChannel(object): |
|
|
|
'''A pub/sub style class. Any objects that are posted (via the |
|
|
|
post method), are received by any async iterators over the instance. |
|
|
@@ -93,7 +97,7 @@ class SolarDataWS(object): |
|
|
|
async with _cmaiter(self._raineagle.enditer()) as ei: |
|
|
|
while True: |
|
|
|
try: |
|
|
|
res = await ei.__anext__() |
|
|
|
res = await anext(ei) |
|
|
|
await ws.send_str('ng %.4f' % res.load) |
|
|
|
except concurrent.futures._base.CancelledError: |
|
|
|
return |
|
|
@@ -174,9 +178,9 @@ class MiscTest(unittest.TestCase): |
|
|
|
|
|
|
|
postmsgtask = loop.create_task(postmsg()) |
|
|
|
|
|
|
|
async with _cmaiter(chan.__aiter__()) as chaniter: |
|
|
|
async with _cmaiter(aiter(chan)) as chaniter: |
|
|
|
order.append('c') |
|
|
|
val = await chaniter.__anext__() |
|
|
|
val = await anext(chaniter) |
|
|
|
order.append('d') |
|
|
|
|
|
|
|
self.assertEqual(val, dataval) |
|
|
@@ -201,18 +205,18 @@ class MiscTest(unittest.TestCase): |
|
|
|
|
|
|
|
postmsgtask = loop.create_task(postmsg()) |
|
|
|
|
|
|
|
async with _cmaiter(chan.__aiter__()) as chaniter, \ |
|
|
|
_cmaiter(chan.__aiter__()) as chaniter2: |
|
|
|
val = await chaniter.__anext__() |
|
|
|
val2 = await chaniter2.__anext__() |
|
|
|
async with _cmaiter(aiter(chan)) as chaniter, \ |
|
|
|
_cmaiter(aiter(chan)) as chaniter2: |
|
|
|
val = await anext(chaniter) |
|
|
|
val2 = await anext(chaniter2) |
|
|
|
|
|
|
|
await asyncio.sleep(.01) |
|
|
|
|
|
|
|
val3 = await chaniter.__anext__() |
|
|
|
val4 = await chaniter2.__anext__() |
|
|
|
val3 = await anext(chaniter) |
|
|
|
val4 = await anext(chaniter2) |
|
|
|
|
|
|
|
async with _cmaiter(chan.__aiter__()) as chaniter3: |
|
|
|
val5 = await chaniter3.__anext__() |
|
|
|
async with _cmaiter(aiter(chan)) as chaniter3: |
|
|
|
val5 = await anext(chaniter3) |
|
|
|
|
|
|
|
self.assertEqual(val, dataval) |
|
|
|
self.assertEqual(val2, dataval) |
|
|
@@ -240,11 +244,11 @@ class MiscTest(unittest.TestCase): |
|
|
|
|
|
|
|
postmsgtask = loop.create_task(postmsg()) |
|
|
|
|
|
|
|
async with _cmaiter(chan.__aiter__()) as chaniter: |
|
|
|
async with _cmaiter(aiter(chan)) as chaniter: |
|
|
|
order.append('c') |
|
|
|
val = await chaniter.__anext__() |
|
|
|
val = await anext(chaniter) |
|
|
|
order.append('d') |
|
|
|
val2 = await chaniter.__anext__() |
|
|
|
val2 = await anext(chaniter) |
|
|
|
order.append('e') |
|
|
|
|
|
|
|
self.assertEqual(val, 5) |
|
|
|