本文整理汇总了Python中tornado.gen.WaitIterator方法的典型用法代码示例。如果您正苦于以下问题:Python gen.WaitIterator方法的具体用法?Python gen.WaitIterator怎么用?Python gen.WaitIterator使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tornado.gen
的用法示例。
在下文中一共展示了gen.WaitIterator方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_iterator
# 需要导入模块: from tornado import gen [as 别名]
# 或者: from tornado.gen import WaitIterator [as 别名]
def test_iterator(self):
futures = [Future(), Future(), Future(), Future()]
self.finish_coroutines(0, futures)
g = gen.WaitIterator(*futures)
i = 0
while not g.done():
try:
r = yield g.next()
except ZeroDivisionError:
self.assertIs(g.current_future, futures[0],
'exception future invalid')
else:
if i == 0:
self.assertEqual(r, 24, 'iterator value incorrect')
self.assertEqual(g.current_index, 2, 'wrong index')
elif i == 2:
self.assertEqual(r, 42, 'iterator value incorrect')
self.assertEqual(g.current_index, 1, 'wrong index')
elif i == 3:
self.assertEqual(r, 84, 'iterator value incorrect')
self.assertEqual(g.current_index, 3, 'wrong index')
i += 1
示例2: test_iterator
# 需要导入模块: from tornado import gen [as 别名]
# 或者: from tornado.gen import WaitIterator [as 别名]
def test_iterator(self):
futures = [Future(), Future(), Future(), Future()] # type: List[Future[int]]
self.finish_coroutines(0, futures)
g = gen.WaitIterator(*futures)
i = 0
while not g.done():
try:
r = yield g.next()
except ZeroDivisionError:
self.assertIs(g.current_future, futures[0], "exception future invalid")
else:
if i == 0:
self.assertEqual(r, 24, "iterator value incorrect")
self.assertEqual(g.current_index, 2, "wrong index")
elif i == 2:
self.assertEqual(r, 42, "iterator value incorrect")
self.assertEqual(g.current_index, 1, "wrong index")
elif i == 3:
self.assertEqual(r, 84, "iterator value incorrect")
self.assertEqual(g.current_index, 3, "wrong index")
i += 1
示例3: test_empty_iterator
# 需要导入模块: from tornado import gen [as 别名]
# 或者: from tornado.gen import WaitIterator [as 别名]
def test_empty_iterator(self):
g = gen.WaitIterator()
self.assertTrue(g.done(), 'empty generator iterated')
with self.assertRaises(ValueError):
g = gen.WaitIterator(False, bar=False)
self.assertEqual(g.current_index, None, "bad nil current index")
self.assertEqual(g.current_future, None, "bad nil current future")
示例4: test_iterator_async_await
# 需要导入模块: from tornado import gen [as 别名]
# 或者: from tornado.gen import WaitIterator [as 别名]
def test_iterator_async_await(self):
# Recreate the previous test with py35 syntax. It's a little clunky
# because of the way the previous test handles an exception on
# a single iteration.
futures = [Future(), Future(), Future(), Future()]
self.finish_coroutines(0, futures)
self.finished = False
namespace = exec_test(globals(), locals(), """
async def f():
i = 0
g = gen.WaitIterator(*futures)
try:
async for r in g:
if i == 0:
self.assertEqual(r, 24, 'iterator value incorrect')
self.assertEqual(g.current_index, 2, 'wrong index')
else:
raise Exception("expected exception on iteration 1")
i += 1
except ZeroDivisionError:
i += 1
async for r in g:
if i == 2:
self.assertEqual(r, 42, 'iterator value incorrect')
self.assertEqual(g.current_index, 1, 'wrong index')
elif i == 3:
self.assertEqual(r, 84, 'iterator value incorrect')
self.assertEqual(g.current_index, 3, 'wrong index')
else:
raise Exception("didn't expect iteration %d" % i)
i += 1
self.finished = True
""")
yield namespace['f']()
self.assertTrue(self.finished)
示例5: test_no_ref
# 需要导入模块: from tornado import gen [as 别名]
# 或者: from tornado.gen import WaitIterator [as 别名]
def test_no_ref(self):
# In this usage, there is no direct hard reference to the
# WaitIterator itself, only the Future it returns. Since
# WaitIterator uses weak references internally to improve GC
# performance, this used to cause problems.
yield gen.with_timeout(datetime.timedelta(seconds=0.1),
gen.WaitIterator(gen.sleep(0)).next())
示例6: test_empty_iterator
# 需要导入模块: from tornado import gen [as 别名]
# 或者: from tornado.gen import WaitIterator [as 别名]
def test_empty_iterator(self):
g = gen.WaitIterator()
self.assertTrue(g.done(), "empty generator iterated")
with self.assertRaises(ValueError):
g = gen.WaitIterator(Future(), bar=Future())
self.assertEqual(g.current_index, None, "bad nil current index")
self.assertEqual(g.current_future, None, "bad nil current future")
示例7: test_iterator_async_await
# 需要导入模块: from tornado import gen [as 别名]
# 或者: from tornado.gen import WaitIterator [as 别名]
def test_iterator_async_await(self):
# Recreate the previous test with py35 syntax. It's a little clunky
# because of the way the previous test handles an exception on
# a single iteration.
futures = [Future(), Future(), Future(), Future()] # type: List[Future[int]]
self.finish_coroutines(0, futures)
self.finished = False
async def f():
i = 0
g = gen.WaitIterator(*futures)
try:
async for r in g:
if i == 0:
self.assertEqual(r, 24, "iterator value incorrect")
self.assertEqual(g.current_index, 2, "wrong index")
else:
raise Exception("expected exception on iteration 1")
i += 1
except ZeroDivisionError:
i += 1
async for r in g:
if i == 2:
self.assertEqual(r, 42, "iterator value incorrect")
self.assertEqual(g.current_index, 1, "wrong index")
elif i == 3:
self.assertEqual(r, 84, "iterator value incorrect")
self.assertEqual(g.current_index, 3, "wrong index")
else:
raise Exception("didn't expect iteration %d" % i)
i += 1
self.finished = True
yield f()
self.assertTrue(self.finished)
示例8: test_no_ref
# 需要导入模块: from tornado import gen [as 别名]
# 或者: from tornado.gen import WaitIterator [as 别名]
def test_no_ref(self):
# In this usage, there is no direct hard reference to the
# WaitIterator itself, only the Future it returns. Since
# WaitIterator uses weak references internally to improve GC
# performance, this used to cause problems.
yield gen.with_timeout(
datetime.timedelta(seconds=0.1), gen.WaitIterator(gen.sleep(0)).next()
)
示例9: test_already_done
# 需要导入模块: from tornado import gen [as 别名]
# 或者: from tornado.gen import WaitIterator [as 别名]
def test_already_done(self):
f1 = Future()
f2 = Future()
f3 = Future()
f1.set_result(24)
f2.set_result(42)
f3.set_result(84)
g = gen.WaitIterator(f1, f2, f3)
i = 0
while not g.done():
r = yield g.next()
# Order is not guaranteed, but the current implementation
# preserves ordering of already-done Futures.
if i == 0:
self.assertEqual(g.current_index, 0)
self.assertIs(g.current_future, f1)
self.assertEqual(r, 24)
elif i == 1:
self.assertEqual(g.current_index, 1)
self.assertIs(g.current_future, f2)
self.assertEqual(r, 42)
elif i == 2:
self.assertEqual(g.current_index, 2)
self.assertIs(g.current_future, f3)
self.assertEqual(r, 84)
i += 1
self.assertEqual(g.current_index, None, "bad nil current index")
self.assertEqual(g.current_future, None, "bad nil current future")
dg = gen.WaitIterator(f1=f1, f2=f2)
while not dg.done():
dr = yield dg.next()
if dg.current_index == "f1":
self.assertTrue(dg.current_future == f1 and dr == 24,
"WaitIterator dict status incorrect")
elif dg.current_index == "f2":
self.assertTrue(dg.current_future == f2 and dr == 42,
"WaitIterator dict status incorrect")
else:
self.fail("got bad WaitIterator index {}".format(
dg.current_index))
i += 1
self.assertEqual(dg.current_index, None, "bad nil current index")
self.assertEqual(dg.current_future, None, "bad nil current future")
示例10: test_already_done
# 需要导入模块: from tornado import gen [as 别名]
# 或者: from tornado.gen import WaitIterator [as 别名]
def test_already_done(self):
f1 = Future() # type: Future[int]
f2 = Future() # type: Future[int]
f3 = Future() # type: Future[int]
f1.set_result(24)
f2.set_result(42)
f3.set_result(84)
g = gen.WaitIterator(f1, f2, f3)
i = 0
while not g.done():
r = yield g.next()
# Order is not guaranteed, but the current implementation
# preserves ordering of already-done Futures.
if i == 0:
self.assertEqual(g.current_index, 0)
self.assertIs(g.current_future, f1)
self.assertEqual(r, 24)
elif i == 1:
self.assertEqual(g.current_index, 1)
self.assertIs(g.current_future, f2)
self.assertEqual(r, 42)
elif i == 2:
self.assertEqual(g.current_index, 2)
self.assertIs(g.current_future, f3)
self.assertEqual(r, 84)
i += 1
self.assertEqual(g.current_index, None, "bad nil current index")
self.assertEqual(g.current_future, None, "bad nil current future")
dg = gen.WaitIterator(f1=f1, f2=f2)
while not dg.done():
dr = yield dg.next()
if dg.current_index == "f1":
self.assertTrue(
dg.current_future == f1 and dr == 24,
"WaitIterator dict status incorrect",
)
elif dg.current_index == "f2":
self.assertTrue(
dg.current_future == f2 and dr == 42,
"WaitIterator dict status incorrect",
)
else:
self.fail("got bad WaitIterator index {}".format(dg.current_index))
i += 1
self.assertEqual(dg.current_index, None, "bad nil current index")
self.assertEqual(dg.current_future, None, "bad nil current future")