Как стать автором
Обновить

Комментарии 2

Сходил по ссылке и взглянул на код семафора, всё в общем-то ясно. Только не понятно для чего нужно условие if not fut.canceled(): в блоке:

        try:
            try:
                await fut
            finally:
                self._waiters.remove(fut)
        except exceptions.CancelledError:
            if not fut.cancelled():
                self._value += 1
                self._wake_up_next()
            raise

Какой тут случай отрабатывается, можете пояснить, пожалуйста?

Здесь как раз проверяется вот этот случай:

Как думаете — что вызывало ошибку, связанную с отменой операции? Речь идёт о сценарии, когда объект Future владеет результатом (посетитель, на пейджер которого поступил сигнал), но задача, ожидающая этот объект Future, отменяется (посетитель отказывается усесться за столик).

Зарегистрируйтесь на Хабре , чтобы оставить комментарий