У меня стоит задача по асинхронному парсингу множества страниц, реализацию я писал используя playwright.
Я написал асинхронный итератор внутри которого открывается новая страница и выполняеться парсинг, но при запуске страници открываются всё так же поочередно и разницы вообще никакой не ощущается.
Что я делаю не так и может быть есть лучшее решение для этой задачи?
class AsyncIterator:
def __init__(self, browser, list):
self.browser = browser
self.list = list
self.end = len(list) - 1
self.start = -1
def __aiter__(self):
return self
async def __anext__(self):
async def update(item, search):
if item.title != search.resent_seen_title or not search.resent_seen_title:
await update_resent_seen_db(search.id, item.title)
return True
if self.start < self.end:
self.start += 1
page = await self.browser.new_page()
user: User = await get_user_db(self.list[self.start].creator_id)
if user.membership_activate and user.membership_activate >= datetime.date.today() or int(
user.user_id) == MANAGER_ID:
try:
item = await parse_item(page, self.list[self.start].search)
await page.close()
if await update(item, self.list[self.start]):
return item, self.list[self.start]
else:
return None, None
except TimeoutError:
try:
item = await parse_item(page, self.list[self.start].search)
await page.close()
if await update(item, self.list[self.start]):
return item, self.list[self.start]
else:
return None, None
except:
return None, None
except Exception as e:
return None, None