2011-02-08 1 views
4

Работаю над приложением gae с использованием python. Приложение включает в себя систему сбора данных, собранную толпой, и данные, используемые в приложении, представлены пользователями по всей стране. Теперь я использую квоты по умолчанию (бесплатно), но сталкиваюсь с проблемой обеспечения как минимум 99% времени для моего приложения.Программно предотвращение исчерпания выделенных Google App Engine Quotas

Задача состоит в том, что Google блокирует дальнейшие запросы, направляемые в ваше приложение, когда вы исчерпаете выделенные квоты, а во время недавнего пробного взлета один человек смог создать автоматический сценарий отправки, который быстро исчерпал квоту ЦП - после что приложение будет обслуживать только HTTP 403 Forbidden status code for the request instead of calling a request handler. Теперь я заблокировал систему, чтобы не разрешать автоматические проводки, но как я могу гарантировать, что пользовательские пользователи не будут вызывать подобное «затемнение» во время производства?

Я знаю API квоты, но думаю, что это может дать мне информацию профилирования для моего приложения, я хочу, чтобы замедлить скорость запросов (например, за минуту для квот за минуту) без обслуживания страниц ошибок или отключения электроэнергии.

Любые предложения?

+0

что бы вы показать пользователям вместо сообщения об ошибке, если бы вы перешли к квоте на эту минуту? Или ваш план просто сделать каждый запрос длиться дольше и дольше, чем ближе вы к квоте? –

+0

Подпишитесь на рассылку. Установите ежедневный лимит оплаты, достаточный для количества трафика, который вы ожидаете получить. –

+0

@Nick Приложение является некоммерческим (это приложение для сообщества), поэтому на данный момент выставление счета не выполняется. – nemesisfixx

ответ

5

Общим решением этой проблемы является делегирование заданий на ограниченный курс taskqueue.

Например:

queue: 
- name: mail-throttle 
    rate: 2000/d 
    bucket_size: 10 
- name: background-processing-throttle 
    rate: 5/s 

Таким образом, вы можете контролировать использование всех частей приложения вынуждает их оставаться в пределах имеющихся квот.

Несколько предостережений:
1. Очереди обеспечивают максимальные усилия для
порядок элементов очереди 2. Enqueuing/Выполнение задачи засчитывается несколько quotas

+0

Спасибо, не знал о taskqueue, я просто задаюсь вопросом, будут ли ресурсы, используемые этой службой, все же перенаправляться на мой «счет» (ну, даже если я использую соглашение о свободной квоте). – nemesisfixx

+0

@mcnemesis: задачи в очереди задач по-прежнему учитываются против ваших квот. Они просто (между прочим) позволяют ограничить скорость, с которой вы выполняете ресурсоемкие задачи. – shang

+0

@shang: Действительно, это ограничение скорости, вызвавшей мои первоначальные опасения.Что касается использования квот, я по-прежнему нахожусь во власти моих пользователей: -/ – nemesisfixx