mirror of https://github.com/scrapy/scrapy.git
Add as_async_generator.
This commit is contained in:
parent
904a50138b
commit
76abcedaf4
|
|
@ -1,5 +1,17 @@
|
|||
import collections
|
||||
|
||||
|
||||
async def collect_asyncgen(result):
|
||||
results = []
|
||||
async for x in result:
|
||||
results.append(x)
|
||||
return results
|
||||
|
||||
|
||||
async def as_async_generator(it):
|
||||
if isinstance(it, collections.abc.AsyncIterator):
|
||||
async for r in it:
|
||||
yield r
|
||||
else:
|
||||
for r in it:
|
||||
yield r
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
from twisted.trial import unittest
|
||||
|
||||
from scrapy.utils.asyncgen import as_async_generator, collect_asyncgen
|
||||
from scrapy.utils.defer import deferred_f_from_coro_f
|
||||
|
||||
|
||||
class AsyncgenUtilsTest(unittest.TestCase):
|
||||
@deferred_f_from_coro_f
|
||||
async def test_as_async_generator(self):
|
||||
ag = as_async_generator(range(42))
|
||||
results = []
|
||||
async for i in ag:
|
||||
results.append(i)
|
||||
self.assertEqual(results, list(range(42)))
|
||||
|
||||
@deferred_f_from_coro_f
|
||||
async def test_collect_asyncgen(self):
|
||||
ag = as_async_generator(range(42))
|
||||
results = await collect_asyncgen(ag)
|
||||
self.assertEqual(results, list(range(42)))
|
||||
Loading…
Reference in New Issue