GAE:请求需要超过30秒



如何为特定的cron/request禁用Google App Engine请求超时

我正在创建一些需要超过30秒处理时间的例程,GAE总是终止我的例程。

有解决办法吗?

一个选项是任务队列,有10分钟的时间限制。

另一个是没有时间限制的后端。

您可能想要查看任务队列。http://code.google.com/appengine/docs/java/taskqueue/overview-push.html

我使用后端来运行需要更多CPU时间的任务,它工作得很好。虽然它是基于python的,但我相信概念应该是一样的。

。使用cron执行任务例如:

cron:
- description: Start Backend to parse the log
  url: /_ah/start/ParseLog/
  schedule: every day 00:00

B。cron执行的任务是在前端运行的,所以仍然有时间限制。因此,我将任务转发到后端(名为"worker")以避免时间限制。

class ParseLogStarter(webapp.RequestHandler):
    # run on frontend
    def get(self):
        self.post()
    def post(self):
        date = self.request.get("date")
        # do nothing but forwarding to backend "worker"
        taskqueue.add(url="/_ah/ParseLog/", params={"date":date}, target='worker') 

C。在后台,接收转发的任务并处理例程作业。

class ParseLogWorker(webapp.RequestHandler):
    # run on backends
    def get(self):
        self.post()
    def post(self):
        # do your routines job here

我同意,你可以使用任务队列,这些有10分钟的超时,我只是在最近的一个项目中使用任务队列,如果需要超过10分钟,我已经做了一点代码来用方便的参数重新排队相同的任务,所以我避免使用更昂贵的后端。

相关内容

  • 没有找到相关文章