代码之家  ›  专栏  ›  技术社区  ›  SangminKim

asyncio.test_utils.run_究竟做了什么?

  •  1
  • SangminKim  · 技术社区  · 6 年前

    据我所知 asyncio.test_utils 由于仅供私人使用,因此不作专门记录(请参阅 issue )。

    但是,我想知道 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 回复  |  直到 6 年前
        1
  •  2
  •   Andrew Svetlov    6 年前

    帮助器进行单事件循环迭代。 它给予 asyncio 有机会执行所有待定的活动,如 loop.call_soon() 等。

    粗略的等价物是 loop.run_until_complete(asyncio.sleep(0)) .