Что конкретно делает asyncio.test_utils.run_b? - PullRequest
0 голосов
/ 23 мая 2018

Насколько мне известно, asyncio.test_utils не задокументировано специально, поскольку предназначено для частного использования (см. Этот выпуск ).

Однако я хочу знать, какую дозу asyncio.test_utils.run_briefly.

Например, здесь, не могли бы вы объяснить?

def test_gather_shield(self):
        child1 = asyncio.Future(loop=self.loop)
        child2 = asyncio.Future(loop=self.loop)
        inner1 = asyncio.shield(child1, loop=self.loop)
        inner2 = asyncio.shield(child2, loop=self.loop)
        parent = asyncio.gather(inner1, inner2, loop=self.loop)
        test_utils.run_briefly(self.loop)
        parent.cancel()
        # This should cancel inner1 and inner2 but bot child1 and child2.
        test_utils.run_briefly(self.loop)
        self.assertIsInstance(parent.exception(), asyncio.CancelledError)
        self.assertTrue(inner1.cancelled())
        self.assertTrue(inner2.cancelled())
        child1.set_result(1)
        child2.set_result(2)
        test_utils.run_briefly(self.loop)

1 Ответ

0 голосов
/ 23 мая 2018

Помощник выполняет итерацию цикла одного события.Это дает asyncio шанс выполнить все ожидающие действия, такие как loop.call_soon() и т. Д.

Примерный эквивалент loop.run_until_complete(asyncio.sleep(0)).

...