Я пишу расширение Google Chrome для Stack Exchange .Это простое расширение, которое позволяет вам отслеживать свою репутацию и получать уведомления о комментариях на сайтах Stack Exchange.
В настоящее время я столкнулся с некоторыми проблемами, с которыми не могу справиться самостоятельно.Мое расширение использует Google App Engine в качестве своего сервера для выполнения внешних запросов к API стека Exchange.Каждый отдельный клиентский запрос от расширения для новых комментариев на одном сайте может вызывать множество запросов к конечной точке API, чтобы подготовить ответ даже для не скептически настроенного пользователя.Средний пользователь имеет учетные записи, по крайней мере, на 3 сайтах из сети Stack Exchange, некоторые имеют> 10!
API стека Exchange имеет ограничения по запросу:
Один IP-адрес может выполнять только определенное количество запросов API в день.(10 000).
API отключит мои запросы, если я сделаю более 30 запросов в течение 5 секунд с одного IP-адреса.
Понятно, что все запросы должны быть сокращены до 30 за 5 секунд и в настоящее времяЯ реализовал логику управления запросами на основе распределенной блокировки с memcached.Я использую memcached в качестве простого менеджера блокировок, чтобы координировать действия экземпляров GAE и регулировать запросы UrlFetch.
Но я считаю, что ограничивать такую мощную инфраструктуру, чтобы она выдавала не более 30 запросов в течение 5 секунд, не удастся.Такая частота запросов API не позволяет мне продолжать разработку новых интересных и полезных функций, и однажды он вообще перестанет работать должным образом.
Сейчас в моем приложении 90 пользователей и его число растет, и мне нужно найти решение, как увеличить запрос.скорость.
Как известно, App Engine делает внешние запросы UrlFetch через один и тот же пул разных IP-адресов.Моя цель - написать функциональность регулирования запросов для обеспечения соответствия условиям использования API и использования распределенных возможностей GAE.
Поэтому мой вопрос заключается в том, как обеспечить максимальную практическую пропускную способность API при соблюдении условий API.использования и использования распределенных возможностей GAE.
Посоветовать использовать другую платформу / хост / прокси просто бесполезно в моем уме.