Асинхронное программирование. Почему не парсит все ссылки? Здравствуйте! Задача: Спарсить 78 файлов, в каждом из которых по 50000 ссылок. Проблема: Переменная total выводит 700-1500, от сюда следует, что выполняются запросы не по всем ссылкам , хотя прокси раздается для каждой. И как заморозить программу при ошибке 429 и 503? Использовал time.sleep() и asyncio.sleep(). Но не то, не другое не сработало.fields = { 'B1': 'Полное наименование Заявителя', 'C1': 'Адрес', 'D1': 'ОГРН', 'E1': 'Должность руководителя', 'F1': 'ФИО', 'G1': 'Телефон', 'H1': 'Эл. Почта', 'I1': 'Рег. номер декларации', 'J1': 'Дата начала действия', 'K1': 'Дата окончания', 'L1': 'Схема', 'M1': 'Статус', 'N1': 'Сведения о документах, на основании которых изготовлена продукция', 'O1': 'ТНВЭД' } def get_data(page): pass async def get(url, session, proxy): global total try: async with session.get(url, proxy='http://{}'.format(proxy), timeout=40) as resp: total += 1 if resp.status == 200: return await resp.text() else: write_to_file('bad.txt', url) '''if resp.status == 429: print('[429] waiting for 30 seconds') await asyncio.sleep(time_error429) if resp.status == 503: print('[503] waiting for 2 minutes') await asyncio.sleep(time_error503)''' except Exception as e: #print('bad proxy', e) pass total = 0 async def save_data_from(url, filename, session, proxy): try: async with asyncio.Semaphore(semaphore): try: page = await get(url, session, proxy) data = get_data(page) if data: text = '' for f in sorted(fields.values()): text += f + ':' text += data[f] + ' ' print(text) write_to_excel(data) except Exception as e: #print('save_data_from', e) pass except: pass async def run(): names = get_names_of('pages/') it = iter(names) cur = 'pages/{}'.format(next(it)) tasks = [] urls = open(cur, encoding='utf-8').readlines() async with ClientSession(headers=headers) as session: for i, url in enumerate(urls): if i % 10: proxy = proxy_local.get_proxy() task = asyncio.ensure_future(save_data_from(url, cur, session, proxy)) tasks.append(task) end_of_file = url #remove_if_done(cur, end_of_file) return await asyncio.gather(*tasks) if __name__ == '__main__': proxy_local = Proxy() user_agent = UserAgent() save = Save() semaphore, time_error429, time_error503 = read_conf() loop = asyncio.get_event_loop() loop.run_until_complete(run()) loop.close() print('total',total)