Вступить в клуб →
средняявопросPython и асинхронность

Синхронизация 20 тысяч товаров через gather уронила API поставщика

async def sync_all(product_ids):
    await asyncio.gather(*(sync_product(pid) for pid in product_ids))

Список — 20 тысяч товаров. Через секунду после старта API поставщика начал отвечать 429 Too Many Requests, а у сервиса закончились файловые дескрипторы. Как исправить, сохранив параллельность?

  • Ограничить число одновременных запросов через asyncio.Semaphore
  • Заменить gather на цикл с await — запросы пойдут по одному
  • Перенести запросы в ThreadPoolExecutor на 20 тысяч потоков
  • Добавить asyncio.sleep(0) в начало sync_product

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела