diff options
| author | 2020-02-15 20:24:48 -0800 | |
|---|---|---|
| committer | 2020-02-15 20:27:31 -0800 | |
| commit | 6b7c0a7a74460ee96c5ce574bf042f3de38dd685 (patch) | |
| tree | 37120390acf28e8811b0328283408dc08a62a97e | |
| parent | Scheduler: remove loop parameter from schedule_task (diff) | |
Scheduler: raise task exceptions besides CancelledError
Explicitly retrieves the task's exception, which will raise the
exception if one exists.
* Rename _suppress_cancelled_error to _handle_task_exception
| -rw-r--r-- | bot/utils/scheduling.py | 11 | 
1 files changed, 7 insertions, 4 deletions
| diff --git a/bot/utils/scheduling.py b/bot/utils/scheduling.py index a16900066..df46ccdd9 100644 --- a/bot/utils/scheduling.py +++ b/bot/utils/scheduling.py @@ -13,8 +13,9 @@ class Scheduler(metaclass=CogABCMeta):      """Task scheduler."""      def __init__(self): +        # Keep track of the child cog's name so the logs are clear. +        self.cog_name = self.__class__.__name__ -        self.cog_name = self.__class__.__name__  # keep track of the child cog's name so the logs are clear.          self.scheduled_tasks: Dict[str, asyncio.Task] = {}      @abstractmethod @@ -42,7 +43,7 @@ class Scheduler(metaclass=CogABCMeta):              return          task = asyncio.create_task(self._scheduled_task(task_data)) -        task.add_done_callback(_suppress_cancelled_error) +        task.add_done_callback(_handle_task_exception)          self.scheduled_tasks[task_id] = task          log.debug(f"{self.cog_name}: scheduled task #{task_id}.") @@ -60,8 +61,10 @@ class Scheduler(metaclass=CogABCMeta):          del self.scheduled_tasks[task_id] -def _suppress_cancelled_error(task: asyncio.Task) -> None: -    """Suppress a task's CancelledError exception.""" +def _handle_task_exception(task: asyncio.Task) -> None: +    """Raise the task's exception, if any, unless the task is cancelled and has a CancelledError."""      if task.cancelled():          with contextlib.suppress(asyncio.CancelledError):              task.exception() +    else: +        task.exception() | 
