async def METHOD_NAME(self, func):
    """
    Run func every interval seconds.
    If func has not finished before *interval*, will run again
    immediately when the previous iteration finished.
    """
    while True:
        start = time.monotonic()
        await func()
        timeout = (self.period/1000.) - (time.monotonic()-start)
        if timeout > 0:
            await asyncio.sleep(timeout)