如何保持GAE配额?算法设计

时间:2010-09-21 11:02:20

标签: python algorithm google-app-engine

我的应用程序中有一个使用大量资源的功能,并且需要时间来执行。 这是正常的和控制,但由于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))

我不知道是否有更好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

我建议你使用Task Queue API,它非常适合这类问题。

请注意,如果您在应用程序上启用了结算功能,则会自动获得更大的免费配额:任务队列API将每日限额增加到20,000,000。

您可以将每日最高预算设置为1美元,但您不必支付任何费用。