मेरे पास एक वर्ग User है जिसे asyncio स्क्रिप्ट पर पुनरावृत्त करने की आवश्यकता है।

__aiter__... के साथ User.objcets.iterator() को async iterator में बदलने का सही तरीका क्या है?

0
Максим Владимирович 4 अप्रैल 2020, 21:21

1 उत्तर

सबसे बढ़िया उत्तर

आप async जनरेटर का उपयोग करके ऐसा पुनरावर्तक बना सकते हैं (इसमें aiter फ़ंक्शन है):

async def sync_to_async(iterator):
    for i in iterator:
        yield i

कंसोल से भी आउटपुट

>>> it = Chat.objects.iterator()
>>> ait = sync_to_async(it)
>>> dir(ait)
['__aiter__', '__anext__', '__class__', '__del__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'aclose', 'ag_await', 'ag_code', 'ag_frame', 'ag_running', 'asend', 'athrow']
0
Anton Pomieshchenko 4 अप्रैल 2020, 19:41