В моем приложении есть функция, которая использует много ресурсов и требует времени для выполнения.
Это нормально и контролирует, однако я часто получаю ошибки из-за ограничения 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))
Я не знаю, есть ли лучший способ сделать это?