Как поставить запросы к бэкенд-серверу Django в очередь, чтобы уложиться в лимит скорости API

У меня есть веб-проект, который основан на некотором API от RapidAPI. Этот API имеет ограничение скорости 10 запросов/сек. Все запросы к этому API обрабатываются на стороне сервера с помощью Django с библиотекой Rest framework. Front-end основан на Vue. Таким образом, это простое веб-приложение.

Проблема в том, что мне нужно каким-то образом поставить в очередь все запросы от пользователей сайта, чтобы не превысить лимит скорости rapidapi, потому что если я это сделаю - некоторые страницы не смогут загрузить часть контента, потому что api вернет ошибку 429.

Обычно это происходит, когда какому-то компоненту необходимо загрузить данные из 3+ различных конечных точек api. Также это относится к ситуации, когда у нас есть, например, 10 онлайн пользователей, которые активно кликают на компоненты страницы, которым нужно получить некоторые данные, поэтому я хочу найти способ решить эту проблему.

Любой совет будет оценен по достоинству

асинхронные рабочие:

прочный трудноперевариваемый: https://docs.celeryq.dev/en/stable/getting-started/introduction.html

более простой, но хороший: https://github.com/rq/rq

или голый металл: https://docs.python.org/3/library/queue.html

Чтобы расширить предложение Франко Миланезе, я предлагаю использовать рабочий, который отделен от вашего приложения Django. Он будет загружать данные отдельно и сохранять их в кэше, к которому приложение Django сможет получить доступ. Затем ваше приложение Django сможет загрузить данные из этого кэша, когда будет обслуживать страницы, которым они нужны.

Вернуться на верх