Программно предотвращает исчерпание выделенных квот 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. Постановка в очередь / выполнение задачи засчитывается в несколько квот

Другие вопросы по тегам