Как поставить запросы к бэкенд-серверу 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 сможет загрузить данные из этого кэша, когда будет обслуживать страницы, которым они нужны.