Небольшое открытие про rate limits
Недавно понял, что всегда реализовывал rate-limit-ы и прочие ограничения у внешних сервисов вручную - счётчики , sleep-ы, retry-логика и т.п.
И только сейчас заметил, что для Python существует целый класс библиотек, решающих это из коробки.
Более того, есть shared rate limiters — которые используют общую БД или Redis для синхронизации лимитов между несколькими инстансами сервиса.
Наиболее интересные варианты, которые нашёл:
limits - самая популярная и довольно простая
asyncio-limiter - асинхронная и довольно низкоуровневая, если хочется что то сложное дописать поверх
redis-rate-limiters - понравилась больше всего, две довольно понятных концепции работы с токенами + атомарность
еще немного удивился что не нашел принципиально других лимитеров - кажется на поверхности лежит идея делать рейт-лимиты не для python-методов апи, а для доменов/урлов, например сделать либу-надстройку над httpx, которая позволяет клиенту httpx передать конфиг с рейт-лимитами по урлам, чтобы в коде дальше вообще про это не думать
Недавно понял, что всегда реализовывал rate-limit-ы и прочие ограничения у внешних сервисов вручную - счётчики , sleep-ы, retry-логика и т.п.
И только сейчас заметил, что для Python существует целый класс библиотек, решающих это из коробки.
Более того, есть shared rate limiters — которые используют общую БД или Redis для синхронизации лимитов между несколькими инстансами сервиса.
Наиболее интересные варианты, которые нашёл:
limits - самая популярная и довольно простая
asyncio-limiter - асинхронная и довольно низкоуровневая, если хочется что то сложное дописать поверх
redis-rate-limiters - понравилась больше всего, две довольно понятных концепции работы с токенами + атомарность
еще немного удивился что не нашел принципиально других лимитеров - кажется на поверхности лежит идея делать рейт-лимиты не для python-методов апи, а для доменов/урлов, например сделать либу-надстройку над httpx, которая позволяет клиенту httpx передать конфиг с рейт-лимитами по урлам, чтобы в коде дальше вообще про это не думать