Программно предотвращает исчерпание выделенных квот Google App Engine
Я работаю над приложением GEA с использованием Python. Приложение включает в себя некоторую систему сбора данных с использованием краудсорсинга, и данные, используемые в приложении, предоставляются пользователями по всей стране. Сейчас я использую квоты по умолчанию (бесплатно), но столкнулся с проблемой обеспечения как минимум 99% времени безотказной работы моего приложения.
Сложность заключается в том, что Google блокирует любые дальнейшие запросы, направляемые в ваше приложение, после того как вы исчерпали свои выделенные квоты, и во время недавнего увеличения времени тестирования один человек смог создать сценарий автоматической публикации, который быстро исчерпал квоту ЦП - после этого приложение будет служить только HTTP 403 Forbidden status code for the request instead of calling a request handler
, Теперь я исправил систему, чтобы не разрешать автоматические публикации, но как я могу гарантировать, что пользователи не будут вызывать подобное "отключение" во время производства?
Я знаю об API квот, но думаю, что он может дать мне только информацию о профилировании моего приложения, я хочу, чтобы был способ замедлить частоту запросов (например, за минуту для квот за минуту) без обслуживания страниц с ошибками или отключений.
Какие-либо предложения?
1 ответ
Одним из распространенных решений этой проблемы является делегирование задач ограниченному количеству задач.
Например:
queue:
- name: mail-throttle
rate: 2000/d
bucket_size: 10
- name: background-processing-throttle
rate: 5/s
Таким образом, вы можете контролировать использование всех частей вашего приложения, заставляя их оставаться в диапазоне доступных квот.
Несколько предостережений:
1. Очереди доставляют заказ FIFO с максимальным усилием
2. Постановка в очередь / выполнение задачи засчитывается в несколько квот