X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_common%2Fmsglocal.py;h=b0abb895ce623291af5ff4ab4e13cbbb413d3bd8;hb=refs%2Fchanges%2F46%2F6746%2F1;hp=247de7b8cf4e5d34ae3d0147d19ee99b0f7ec274;hpb=136f29577fd83028369c2c4fc4c60f738e0d26d3;p=osm%2Fcommon.git diff --git a/osm_common/msglocal.py b/osm_common/msglocal.py index 247de7b..b0abb89 100644 --- a/osm_common/msglocal.py +++ b/osm_common/msglocal.py @@ -116,7 +116,7 @@ class MsgLocal(MsgBase): except Exception as e: # TODO refine raise MsgException(str(e), HTTPStatus.INTERNAL_SERVER_ERROR) - async def aioread(self, topic, loop): + async def aioread(self, topic, loop=None, callback=None, aiocallback=None, **kwargs): """ Asyncio read from one or several topics. It blocks :param topic: can be str: single topic; or str list: several topics @@ -127,7 +127,12 @@ class MsgLocal(MsgBase): while True: msg = self.read(topic, blocks=False) if msg: - return msg + if callback: + callback(*msg, **kwargs) + elif aiocallback: + await aiocallback(*msg, **kwargs) + else: + return msg await asyncio.sleep(2, loop=loop) except MsgException: raise