Как остаться под квотами GAE?Алгоритм проектирования - PullRequest
1 голос
/ 21 сентября 2010

В моем приложении есть функция, которая использует много ресурсов и требует времени для выполнения. Это нормально и контролирует, однако я часто получаю ошибки из-за ограничения GAE в 30 секунд / запрос.

Моя функция принимает аргумент и возвращает несколько результатов один за другим, уменьшая размер аргумента (строка в Юникоде)

Резюме:

def my_function(arg):
    while arg!=u''
        #do_stuff
        #get result
        #arg=new_argument(arg,result)

Поскольку процесс требует ресурсов, я подумал, что могу разделить его и поставить в очередь:

def my_function(arg):
    if arg==u''
       #stop
    else:
      do_stuff
      get_result
      enqueue(my_function(new_argument))

Однако я боюсь попасть в предел очереди API в 100 тыс. Вызовов, поскольку у меня может быть много итераций.

Я думал о перенаправлении запроса один на другой, который бы выполнял их подряд, но тогда у меня нет возможности контролировать использование ресурсов:

def my_function(arg):
    if arg==u''
       #stop
    else:
      do_stuff
      get_result
      return redirect('/my_function_url',args=(new_argument))

Я не знаю, есть ли лучший способ сделать это?

1 Ответ

1 голос
/ 21 сентября 2010

Я бы посоветовал вам использовать API очереди задач, который идеально подходит для такого рода проблем.

Имейте в виду, что если вы включите биллинг для своего приложения, вы автоматически получите гораздо большие бесплатные квоты:Ежедневный лимит вызовов API очереди задач увеличивается до 20 000 000.

Вы можете установить максимальный ежедневный бюджет всего в 1 доллар, но вам, скорее всего, ничего не придется платить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...