loop.py 文件源码

python
阅读 30 收藏 0 点赞 0 评论 0

项目:tasky 作者: jreese 项目源码 文件源码
def monitor_tasks(self, interval: float=1.0) -> None:
        '''Monitor all known tasks for run state.  Ensure that enabled tasks
        are running, and that disabled tasks are stopped.'''

        Log.debug('monitor running')
        while True:
            try:
                await asyncio.sleep(interval)

                for name, task in self.all_tasks.items():
                    if self.terminate_on_finish:
                        if task in self.running_tasks and task.running:
                            await task.stop()

                    elif task.enabled:
                        if task not in self.running_tasks:
                            Log.debug('task %s enabled, restarting', task.name)
                            await self.insert(task)

                    else:
                        if task in self.running_tasks:
                            Log.debug('task %s disabled, stopping', task.name)
                            await task.stop()

                if self.terminate_on_finish and not self.running_tasks:
                    Log.debug('all tasks completed, terminating')
                    break

            except CancelledError:
                Log.debug('monitor cancelled')
                break

            except Exception:
                Log.exception('monitoring exception')

        self.monitor = None
        self.loop.call_later(0, self.terminate)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号