我的应用程序中有一个使用大量资源的功能,并且需要时间来执行。 这是正常的和控制,但由于GAE限制为30秒/请求,我经常会出错。
我的函数接受参数并一个接一个地返回几个结果,减小参数的大小(unicode字符串)
要点:
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))
但是我担心会受到100k调用的API队列限制,因为我可能会进行大量的迭代。
我正在考虑将请求重定向到另一个,这会将它们连续执行,但之后我无法控制资源使用情况:
def my_function(arg):
if arg==u''
#stop
else:
do_stuff
get_result
return redirect('/my_function_url',args=(new_argument))
我不知道是否有更好的方法可以做到这一点?
答案 0 :(得分:1)
我建议你使用Task Queue API,它非常适合这类问题。
请注意,如果您在应用程序上启用了结算功能,则会自动获得更大的免费配额:任务队列API将每日限额增加到20,000,000。
您可以将每日最高预算设置为1美元,但您不必支付任何费用。