async def METHOD_NAME(self):
    """ Future that is running and checks if server should be running
        periodically.
    """
    while self.is_running:
        while self.tasks:
            task = self.tasks.pop(0)
            self.log.debug("waiting for task {}".format(task))
            await task
            self.log.debug("returned value {}".format(task.result))
        await asyncio.sleep(0.5)
    self.log.debug("Starting shutdown")
    await self.site.stop()
    self.log.debug("Site stopped")
    await self.runner.cleanup()
    self.log.debug("Runner stopped")
    tasks = [
        task
        for task in asyncio.all_tasks()
        if task is not asyncio.current_task()
    ]
    list(map(lambda task: task.cancel(), tasks))  # cancel all the tasks
    results = await asyncio.gather(*tasks, return_exceptions=True)
    self.log.debug(
        f'Finished awaiting cancelled tasks, results: {results}...'
    )
    await self.loop.shutdown_asyncgens()
    # to really make sure everything else has time to stop
    await asyncio.sleep(0.07)
    self.loop.stop()