Асинхронный итератор
У меня есть итератор, который получает прокси из другого сервиса.
class StaticProxyIterator:
def __init__(self, pa_client):
self.pa_client = pa_client
def __aiter__(self):
return self
async def __anext__(self):
m = proxy_agent.GetProxies()
resp, status = await self.pa_client.request(m)
check_status(status, 200)
empty_response(resp)
for p in resp:
yield p
Этот итератор я хочу вызывать так, в рамках асинхронной функции:
async def execute():
invalid_statuses = []
content = None
async for p in self.__proxy_it:
print(p)
Но я получаю это:
TypeError: 'async for' received an invalid object from anext: async_generator
В чём причина и как побороть? В ходе экспериментов, я выяснил, что проблема в наличии самого итератора, т.е. в слове yield. Если его убрать, то всё работает.