no more busyloops in stub plugins

This commit is contained in:
Devaev Maxim 2020-03-01 04:30:32 +03:00
parent ff6e284e64
commit 44b0ab19bf
3 changed files with 11 additions and 5 deletions

View File

@ -104,6 +104,11 @@ def run_sync(coro: Coroutine[Any, Any, _RetvalT]) -> _RetvalT:
return asyncio.get_event_loop().run_until_complete(coro) return asyncio.get_event_loop().run_until_complete(coro)
# =====
async def wait_infinite() -> None:
await asyncio.get_event_loop().create_future()
# ===== # =====
@contextlib.asynccontextmanager @contextlib.asynccontextmanager
async def unlock_only_on_exception(lock: asyncio.Lock) -> AsyncGenerator[None, None]: async def unlock_only_on_exception(lock: asyncio.Lock) -> AsyncGenerator[None, None]:

View File

@ -20,11 +20,11 @@
# ========================================================================== # # ========================================================================== #
import asyncio
from typing import Dict from typing import Dict
from typing import AsyncGenerator from typing import AsyncGenerator
from ... import aiotools
from . import AtxOperationError from . import AtxOperationError
from . import BaseAtx from . import BaseAtx
@ -50,7 +50,7 @@ class Plugin(BaseAtx):
async def poll_state(self) -> AsyncGenerator[Dict, None]: async def poll_state(self) -> AsyncGenerator[Dict, None]:
while True: while True:
yield self.get_state() yield self.get_state()
await asyncio.sleep(60) await aiotools.wait_infinite()
# ===== # =====

View File

@ -20,13 +20,14 @@
# ========================================================================== # # ========================================================================== #
import asyncio
import contextlib import contextlib
from typing import Dict from typing import Dict
from typing import AsyncGenerator from typing import AsyncGenerator
from typing import Optional from typing import Optional
from ... import aiotools
from . import MsdOperationError from . import MsdOperationError
from . import BaseMsd from . import BaseMsd
@ -55,7 +56,7 @@ class Plugin(BaseMsd):
async def poll_state(self) -> AsyncGenerator[Dict, None]: async def poll_state(self) -> AsyncGenerator[Dict, None]:
while True: while True:
yield (await self.get_state()) yield (await self.get_state())
await asyncio.sleep(60) await aiotools.wait_infinite()
async def reset(self) -> None: async def reset(self) -> None:
raise MsdDisabledError() raise MsdDisabledError()