GAE:请求需要超过30秒

时间:2012-01-02 18:59:07

标签: java google-app-engine servlets timeout

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

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

有没有解决方案?

4 个答案:

答案 0 :(得分:2)

一个选项是Task Queues,其时间限制为10分钟。

另一个是Backends,没有时间限制。

答案 1 :(得分:0)

答案 2 :(得分:0)

我已经使用后端来运行需要更多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') 

℃。在后端,接收转发的任务并处理例程工作。

class ParseLogWorker(webapp.RequestHandler):
    # run on backends
    def get(self):
        self.post()

    def post(self):
        # do your routines job here

答案 3 :(得分:0)

我同意,您可以使用任务队列,这些队列的超时时间为10分钟,我刚刚在最近的项目中使用了任务队列,并且我已经完成了一些代码,以便使用方便的参数重新排队相同的任务需要超过10分钟,所以我避免使用更昂贵的后端。